使用TreeMap.Entry对Object []进行排序

时间:2017-11-28 09:46:18

标签: java groovy

我的Object[]类型列表是TreeMap.Entry<String, ChatDisplayDayWrapper>

密钥是2017-11-282017-11-272017-11-26等字符串。

如何对列表进行排序以使键也按顺序排序 - &GT; 2017-11-262017-11-272017-11-28

我尝试将String转换为Date put我不知道如何在对列表进行排序后将其写回来。

代码

Object[] objectList = chatWrapper.getChatDayWrappers(); 

List<Date> listToSort = new ArrayList<Date>();

for (int i = 0; i <= objectList.size() - 1; i++) {
        String day = objectList[i].key;
        Date newDate = dfDate.parse(day);
        listToSort.add(newDate)
}
getLogger().info("before sorting listToSort: " + listToSort);

listToSort = listToSort.sort { a, b ->
    a <=> b 
}
getLogger().info("After sorting listToSort: " + listToSort);

输出

排序listToSort前的

  

[星期二11月28日00:00:00 2017年1月27日星期一00:00:00 00:00,星期日11月26日00:00:00 CET 2017]

排序listToSort之后:

  

[太阳11月26日00:00:00 CET 2017年11月27日星期一00:00:00截止2017年11月28日星期二00 00:00:00]

截图

enter image description here

2 个答案:

答案 0 :(得分:1)

Java 8

 List<TreeMap.Entry<String, ChatDisplayDayWrapper>> myList = Arrats.asList(objectList);
 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
    Collections.sort(myList , (s1, s2) -> LocalDateTime.parse(s1.getKey(), formatter).
            compareTo(LocalDateTime.parse(s2.getKey(), formatter)));

Java 7

 List<TreeMap.Entry<String, ChatDisplayDayWrapper>> myList = Arrays.asList(objectList);
 static SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd");
public static Comparator<TreeMap.Entry<String, ChatDisplayDayWrapper>> myComparator = new Comparator<TreeMap.Entry<String, ChatDisplayDayWrapper>>() {

    @Override
    public int compare(TreeMap.Entry<String, TreeMap.Entry<String, ChatDisplayDayWrapper>>e1, Employee e2) {
        return formatter .parse(s1.getKey()).
            compareTo(formatter .parse(s2.getKey()))
    }
};

    Collections.sort(myList , myComparator);

我几乎从here

取了它

答案 1 :(得分:0)

使用如下... 反向排序

     Comparator<Date> dateComparator = (a, b)-> a.compareTo(b);
     listToSort.sort(dateComparator.reversed());

用于自然分类

     Comparator<Date> dateComparator = (a, b)->a.compareTo(b);
     listToSort .sort(dateComparator);