2016-11-15 75 views
1

我正在开发一个项目,我需要存储具有多个重复键的键/值。虽然有许多像apache commons和番石榴这样的新实现,但它们大多基于具有多个值的单个键,如下所示。Java数据结构:映射重复键并按值排序

Map<Integer, List<String>> 

我需要的是具有重复的键以及按值而不是按键排序地图的功能。它意味着一个完全基于位置和按值排序的地图数据结构。

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

+3

这听起来像你问2个问题:1)[如何创建一个带有重复键的映射?](http://stackoverflow.com/questions/1062960/map-implementation-with-duplicate-keys)2)[如何排序按价值?](http://stackoverflow.com/questions/109383/sort-a-mapkey-value-by-values-java) – shmosel

+1

如果你把它分为两个问题,那么有许多答案已经可以为它....但我需要与重复键的地图按值排序... –

+0

“排序地图的能力”,你的意思是你经常迭代,所以它必须保持一个排序的顺序,还是你的意思是你偶尔迭代,所以迭代开始时的排序性能是否正常? – Andreas

回答

1

我这种情况下,你应该创建自己的Map类,并按自己的方式编写代码。

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

0

创建一个自定义类作为属性和一些标识符来确定该类的两个对象是否相同....重写自定义类的equals和hashcode方法,并使用自定义类的对象作为关键字你的地图.....值可以是对应的原始密钥的值.....这里的诀窍是拿出最佳的哈希码和等于实现,以确保更少的碰撞...