java - Java中的集合排序问题

标签 java date arraylist collections

简单来说,我有一个周列表 ArrayList<Week> ,每个都包含一个日期列表 ArrayList<Day> ,每个都包含 Day 类中的 Date 对象。换句话说,有周,有天,有日期。

对于一个问题,我必须随机化 ArrayList<Week> ,我使用 Collections.shuffle 并运行良好。

然后我需要将它们按顺序放回原处,我尝试这样做:

public void sortWeeksInDateOrder(final List<Week> weeks) {
Collections.sort(weeks, new Comparator<Week>() {
        @Override
        public int compare(final Week week1, final Week week2) {
        //Return -1 or 1 if first date is before or after second date.
            return week1.getAllDays().get(0).getDate().before((week2.getAllDays().get(0).getDate())) ? -1 : 1;
        }
    });
}

但是它没有排序。我错过了什么吗?周数永远不会相同,因此我不需要返回 0,所以我认为这个解决方案可行。

最佳答案

为了使其简洁,您应该为 Week 类实现 Comparable 接口(interface),并向 compareTo 方法提供实现细节,说明您希望如何比较 Weeks。

因此,这样写就足够了:

Collections.sort(weeks, new Comparator<Week>() {
        @Override
        public int compare(final Week week1, final Week week2) {
            return week1.compareTo(week2);
        }
    });

关于java - Java中的集合排序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35648301/

相关文章:

java - JPanel 内可调整大小的 JFreeChart

regex - 谷歌表格: Parse date from text

java - JAVA中查找子字符串的最快方法

java - 重复用户输入,同时将其添加到数组列表

android - ArrayList 的持久化存储

java - 了解 gradle 依赖关系

接口(interface)方法定义上的Java注释没有被处理?

java - Amazon SQS 中的消息数

c# - 为什么 AutoMapper 不能正确格式化我的日期?

php - 如何用 php/MySQL 做循环日期