gpt4 book ai didi

java - 按键订购 HashMap?

转载 作者:行者123 更新时间:2023-11-29 06:54:48 27 4
gpt4 key购买 nike

我有一个包含以下条目的 HashMap:

- 狗对象- 狗的描述

Map<Dog, List<String>> DogsAndDescriptions;

我想按“老狗优先”的顺序订购 HashMap。

Dog 是一个 Entity,它具有以下我想按其排序的字段:

 @Column(name = "BIRTHDAY")
@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentDateTime")
private DateTime birthday;

有可能吗?

最佳答案

这实际上是不可能的,因为 HashMap 是一个特殊的无序列表。

您可以使用使用插入顺序的 java.util.LinkedHashMap,但我认为您在这里真正想要的是 TreeMap这将支持其中元素的自然排序。

如果您添加一个比较器,它会吐出最老的狗,那么 TreeMap 会为您按该顺序对它们进行排序。

TreeMap 是 Map 的一个实现界面,以便您以与刚才相同的方式与其进行交互。

TreeMap<Dog, List<String>> dogsAndDescriptions = new TreeMap<Dog, List<String>>();

将实例化您的(不要将您的变量大写)dogsAndDescriptions 映射实例。作为 TreeMap 构造函数的一部分,您可以做的是传入 Comparator。这将控制你的狗如何作为键进行排序,或者使 Dog 类扩展 Comparable 并覆盖 compareTo 方法,基本上类似于

class Dog implements Comparable<Dog>{
//somecode

@Override
public int compareTo(Dog o) {
return birthday.compareTo(o.birthday);
}
}

所以你可以看到,它会根据狗的生日来比较它们。我将链接到 example here我认为比较器的工作方式是一个不同的问题。但这是对它们进行排序的两种方法。

关于java - 按键订购 HashMap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36546957/

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