Java排序Arraylist并返回排序列表

时间:2016-03-01 09:55:40

标签: java sorting arraylist

你好我试图按照answer

中的日期属性返回一个已排序的Arraylist
public class CustomComparator implements Comparator<MyObject> {
@Override
public int compare(MyObject o1, MyObject o2) {
    return o1.getStartDate().compareTo(o2.getStartDate());
}
}

我的问题是如何返回排序列表而不是返回int ... 我需要的只是一种方法,我将它传递给我的列表,然后它返回一个排序列表。

在我的情况下,我在列表中有很多项目,我不知道是否可以比较所有项目并相应地对它们进行排序。

提前致谢。

3 个答案:

答案 0 :(得分:5)

你可以这样做。

List<MyClass> unsortedList=...
List<MyClass> sortedList = unsortedList.stream()
            .sorted((MyClass o1, MyClass o2) -> o1.getStartDate().compareTo(o2.getStartDate()))
            .collect(Collectors.toList());

更简短的表格可以是

List<MyClass> sortedList = unsortedList.stream()
                .sorted((o1,o2) -> o1.getStartDate().compareTo(o2.getStartDate()))
                .collect(Collectors.toList());

答案 1 :(得分:3)

如果您希望将已排序的List与原始的/** * @param input The unsorted list * @return a new List with the sorted elements */ public static List<Integer> returnSortedList(List<Integer> input) { List<Integer> sortedList = new ArrayList<>(input); sortedList.sort(new CustomComparator()); return sortedList; } 分开,请执行此操作。

List

如果您还想更改原始public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<>(); list.add(0); list.add(1); list.add(23); list.add(50); list.add(3); list.add(20); list.add(17); list.sort(new CustomComparator()); } ,只需在原始实例上调用它即可。

aldeed:collection2

答案 2 :(得分:1)

实施Comaparator界面后,您必须致电

      // sort the list
      Collections.sort(list);

对列表进行排序的方法。 请参见示例herehere