Java排序Arraylist并返回排序列表[重复]

Posted

技术标签:

【中文标题】Java排序Arraylist并返回排序列表[重复]【英文标题】:Java sort Arraylist and return sorted list [duplicate] 【发布时间】:2016-06-13 16:22:24 【问题描述】:

您好,我正在尝试返回一个按日期属性排序的 Arraylist,例如 answer

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


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

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

提前致谢。

【问题讨论】:

Collections.sort(yourList, new CustomComparator()) 嗨@Eran你能发一些例子吗,谢谢 所以您阅读了答案,但没有看过问题?它向您展示了如何使用这个CustomComparator @C.B 我的评论包含您需要的所有代码(除了您已经拥有的 CustomComparator 类) 方法compare 用于比较两个对象以进行已经可行的排序。它必须被覆盖才能实现自定义排序(就像你正在尝试的那样)。您只需拨打list.sort(new CustomCoperator()) 【参考方案1】:

你可以这样做。

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());

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

实现 Comapararator 接口后,你必须调用

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

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

【讨论】:

这不会返回排序列表。 Collections.sort(List&lt;T&gt;) 对提供的列表进行就地排序。

以上是关于Java排序Arraylist并返回排序列表[重复]的主要内容,如果未能解决你的问题,请参考以下文章

排序ArrayList - JAVA [重复]

创建对象的列表/数组列表并对列表进行排序(Java)[重复]

如何根据GPA对数组列表进行升序排序? arraylist 包含一个对象数组。 (Java)[重复]

使用java8的排序列表[重复]

java中ArrayList排序

java中list和arraylist的区别