Java 排序 Arraylist 并返回排序列表



>您好,我正在尝试按日期属性返回排序的数组列表,如本答案所示

public class CustomComparator implements Comparator<MyObject> {
@Override
public int compare(MyObject o1, MyObject o2) {
    return o1.getStartDate().compareTo(o2.getStartDate());
}
}

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

就我而言,列表中有很多项目,我不知道是否可以比较所有项目并相应地对其进行排序。

提前谢谢。

你可以

这样做。

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());
如果您希望将

排序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());
}

实现 Comaparator 接口后,您必须调用

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

对列表进行排序的方法。请参阅此处和此处的示例。

最新更新