日期ArrayList的排序

Posted

技术标签:

【中文标题】日期ArrayList的排序【英文标题】:Sorting of Date ArrayList 【发布时间】:2012-09-15 16:45:27 【问题描述】:

我有一个ArrayList,其中包含格式为(星期六,2012 年 2 月 4 日)的日期。我怎样才能对这个ArrayList 进行排序?

【问题讨论】:

你做了什么?这样做?你试过了吗? 你约会时使用什么课程? 您需要以哪种类型开始日期或日期或年份? 日期格式?你的意思是日期存储为字符串?因为java.util.Date 对象本身没有格式。 我尝试使用 Collections.sort()....我在数组列表中有四到五个日期项目,格式为“2012 年 2 月 4 日星期六”...我必须对它们进行排序以显示按从新到旧的顺序排列。 【参考方案1】:

这是最简单的排序方式之一,

Collections.sort(<Your Array List>);

【讨论】:

【参考方案2】:

如果您在排序时有任何特殊要求,可以提供自己的Comparator。例如:

//your List
ArrayList<Date> d = new ArrayList<Date>();

//Sorting
Collections.sort(d, new Comparator<Date>() 
    @Override
    public int compare(Date lhs, Date rhs) 
        if (lhs.getTime() < rhs.getTime())
            return -1;
        else if (lhs.getTime() == rhs.getTime())
            return 0;
        else
            return 1;
    
);

关键是您要将Date 对象转换为毫秒(使用getTime())进行比较。

【讨论】:

否则只使用 Collections.sort();正如@Aerrow 所说。日期为comparable。【参考方案3】:

8 年后..

List<Date> dates = datelist;
List<Date> sorted = dates.stream()
  .sorted(Comparator.comparingLong(Date::getTime))
  .collect(Collectors.toList());

【讨论】:

以上是关于日期ArrayList的排序的主要内容,如果未能解决你的问题,请参考以下文章

如何根据 array[0] 元素对数组的 ArrayList 进行排序,该元素是以 dd/mm/yyyy 格式给出的日期?

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

如何按对象属性对 ArrayList 进行排序? [复制]

如何根据日期对 HashMap 进行排序? [复制]

arraylist数组排序

C# ArrayList的排序