gpt4 book ai didi

java - 按 HashMap 中的值对对象进行排序

转载 作者:行者123 更新时间:2023-12-01 21:16:00 25 4
gpt4 key购买 nike

我有一个包含一些 Activity (键)和日期(值)的 HashMap ,我想按值顺序显示它们,例如第一个日期位于第一个位置,第二个日期位于第二个位置...使用此代码:

public void afficheRS(HashMap<Activity, monCalendrier> edt) {
SortedSet<monCalendrier> values = new TreeSet<>(edt.values());
System.out.println(values);
for(Entry<Activity, monCalendrier> entry : edt.entrySet()) {
System.out.println("| " + entry.getKey() + "\n " + entry.getValue() + " |" );

}
}

但是现在,我只按顺序显示值(按 SortedSet),但是当我使用时:

for(Entry<Activity, monCalendrier> entry : edt.entrySet()) {
System.out.println("| " + entry.getKey() + "\n " + entry.getValue() + " |" );

}

这显示了我所有的 Activity (比如想要),但不按值排序(这很正常,因为我想做但我不知道该怎么做)

当我调用显示此内容的 afficheRS 时(例如,它是一个随机生成器):

    [6:27 8/11/2019, 13:12 8/11/2019, 20:16 8/11/2019] 
| Go to school(durée : 30 minutes) 13:12 8/11/2019 |
| Homework (durée : 60 minutes) 20:16 8/11/2019 |
| Take a coffe (durée : 10 minutes) 6:27 8/11/2019 |

我想要

     [6:27 8/11/2019, 13:12 8/11/2019, 20:16 8/11/2019] 
| Take a coffe (durée : 10 minutes) 6:27 8/11/2019 |
| Go to school(durée : 30 minutes) 13:12 8/11/2019 |
| Homework (durée : 60 minutes) 20:16 8/11/2019 |

感谢您的帮助

最佳答案

SortedSet<monCalendrier> values = new TreeSet<>(edt.values());在这里,您将值放入 new SortedSet 中。对象对其进行排序,而您的 map 实际上并未按值排序。那么下次当您调用etd.entrySet()时它返回未排序的条目集。

您可以选择创建 TreeSet排序条目本身,然后通过迭代打印键值对。或者您可以尝试使用 Java 8 流和函数进行类似的操作。

  LinkedHashMap edt = edt
.entrySet()
.stream()
.sorted(Map.Entry.comparingByValue())
.collect(
toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e2,
LinkedHashMap::new));;

关于java - 按 HashMap 中的值对对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58874836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com