>您好,我正在尝试按日期属性返回排序的数组列表,如本答案所示
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);
对列表进行排序的方法。请参阅此处和此处的示例。