是否有将订单转储到第二个列表而不是修改第一个列表的功能?

时间:2019-09-08 21:50:44

标签: java arraylist

我正在创建一个应用程序,用于排序从最佳到最差的比赛结果列表,并显示实际位置。我才刚开始编程。

示例:

ArrayList结果/// [8,9,5,4,7]

应返回ArrayList位置(从低到高)// [4,5,2,1,3]

2 个答案:

答案 0 :(得分:0)

如果要对arrayList进行排序,则应尝试Collections.sort(ArrayList)。如果您的列表仅包含数字(int,double ...),则该方法有效。如果要对其他内容进行排序,则应查看Comparator接口及其比较方法。而且,如果您不想更改原始数组,只需创建一个对arrayList进行排序的方法,该方法作为Parameter给出并返回。返回的值可以保存到新的arrayList中。

另一种解决方案是使用HashMap。该列表可以存储键和值。这是一个教程:https://www.w3schools.com/java/java_hashmap.asp

答案 1 :(得分:0)

只需对结果进行排序即可使用:

Collections.sort(result, Collections.reverseOrder());

但是,如果您需要跟踪索引,则可能需要:

class ResultArray{
   int index;
   int value;
   public ResultArray(int i, int v){
         index = i;
         value = v;
   }
}
List<ResultArray> nums = new ArrayList<>();
    for(int i = 0; i < result.size(); i++) {
        nums.add(new ResultArray(i, result.get(i)));
    }
    Collections.sort(nums, (a, b) -> a.y > b.y ? -1 : 1);