Java数据结构:具有重复键的映射和按值排序

Java数据结构:具有重复键的映射和按值排序,java,data-structures,java-8,guava,apache-commons,Java,Data Structures,Java 8,Guava,Apache Commons,我正在进行一个项目,需要存储具有多个重复键的键/值。尽管有许多新的实现,如ApacheCommons和guava,但它们大多基于具有多个值的单键,如下所示 Map<Integer, List<String>> Map 我需要的是具有重复键以及按值而不是按键对地图进行排序的功能。这意味着,一个完全基于位置和按值排序的地图数据结构 请务必让我知道是否有任何现有的实现或任何想法来实现相同的 I在这种情况下,您应该创建自己的Map类,并以自己的方式编写代码 或者,您可以简单地

我正在进行一个项目,需要存储具有多个重复键的键/值。尽管有许多新的实现,如ApacheCommons和guava,但它们大多基于具有多个值的单键,如下所示

Map<Integer, List<String>>
Map
我需要的是具有重复键以及按值而不是按键对地图进行排序的功能。这意味着,一个完全基于位置和按值排序的地图数据结构


请务必让我知道是否有任何现有的实现或任何想法来实现相同的

I在这种情况下,您应该创建自己的
Map
类,并以自己的方式编写代码


或者,您可以简单地将代码从
HashMap
类复制到您的类中,然后根据自己的方式对代码进行更改。您可以从
src.zip
文件中找到
HashMap
类的代码,该文件将出现在
JDK
安装目录中。

创建一个自定义类,将您的密钥作为属性和一些标识符,以确定该类的两个对象是否相同……重写自定义类的equals和hashcode方法并使用自定义类的对象作为映射的键…..该值可以是与原始键对应的值…..这里的技巧是提出最佳哈希代码和equals实现,以确保更少的冲突…

听起来像是在问2个问题:1)2)如果将其分为两个问题,那么已经有很多答案了。。。。但是我需要有重复键的映射按值排序…按“对映射排序的能力”,你是说你经常迭代,所以它必须保持排序顺序,还是说你只是偶尔迭代,所以在迭代开始时排序的性能是可以的?啊,你是这样的吗?很抱歉,这与StackOverflow无关(请参见#4)。如果您希望允许重复密钥,那么在请求密钥的值时,您希望检索哪个值?如果不希望通过键检索值,则不需要映射。一个元组列表就足够了——通过实现一个比较器,您可以按照任何方式对该列表进行排序。