gpt4 book ai didi

java - 使用值对象中的字段对 map 列表进行排序

转载 作者:行者123 更新时间:2023-12-01 06:49:10 27 4
gpt4 key购买 nike

正在寻找使用 Java 版本 7 及更低版本的解决方案。

我有以下 map 列表。

List<Map.Entry<String, Person>> stuff = new ArrayList<>();

这是 Person 类

class Person{
private String name;
private int order;

// get set
}

我想根据人的顺序对列表“东西”进行排序。我怎样才能做到这一点?我计划在 Person 类上实现 Comparable 并编写比较逻辑。

但是我如何对其进行排序,因为 Person 对象作为值保存在映射中,而映射又保存在列表中。对于我来说,要对 Map 进行排序,我想也许我可以考虑使用 TreeMap。话又说回来,我不确定我是否把事情复杂化了。

我需要保留列表的结构,其中包含作为字符串的键和作为人员的值的映射。感谢对此的任何意见。谢谢。

最佳答案

只需创建一个比较器来比较所需的字段:

Collections.sort(stuff, new Comparator<Map.Entry<String, Person>>() {
@Override
public int compare(Map.Entry<String, Person> entry1, Map.Entry<String, Person> entry2) {
return Integer.compare(entry1.getValue().getOrder(), entry2.getValue().getOrder());
}
});

一旦您使用 Java 8,这就会变得容易得多:

stuff.sort(Comparator.comparingInt(e -> e.getValue().getOrder()));

关于java - 使用值对象中的字段对 map 列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51958580/

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