将匹配数组发布到整数的排序列表

时间:2015-12-05 15:24:48

标签: java arrays sorting

我目前有一个排序的玩家1-4分数列表,但我遇到了将它们与正确的玩家匹配的问题。

采用这种方法,例如:

public static void exitmethod(int[] scorep1)
{
  sort(scorep1);
  for (int i = 0; i < 4; i++)
  {
     System.out.println("Player " + (i+1) + " scored " + scorep1[i] + "");
  }
  System.exit(0);
}

以这种方式打印分数,分数为Player 1 = 5Player 2 = 2Player 3 = 2Player 4 = 1,有序输出为

Player 1 scored 1
Player 2 scored 2
Player 3 scored 2
Player 4 scored 5

这显然是不正确的,我不知道如何使用它的对应分数来打印正确的玩家编号。非常感谢正确方向的推动。

2 个答案:

答案 0 :(得分:2)

这是使用TreeMap&lt;&gt;的选项因此,不需要定义另一个类,只需将每个分数映射到其播放器。

int scores[] = {7, 3, 1, 2, 4};
Map<Integer, Integer> map = new TreeMap<>();
for (int i = 0; i < scores.length; i++) {
    map.put(scores[i], i);
}
System.out.println("map = " + map);
for (Entry<Integer, Integer> e : map.entrySet()) {
    System.out.println("player " + e.getValue() + " scored " + e.getKey());
}

答案 1 :(得分:0)

默认Array.sort(int[]) gives you ascending结果而不是降序。

您可以创建自己的比较器并将其作为适当的List::sort方法传递给您,因为您说您已经“排序列表”。

似乎没有一个版本的Arrays.sort()也带有Comparator参数。

编辑: 另见@ Haider对例子的评论。