1

AHashMap具有恒定的访问时间,但不允许重复。AnArrayList允许重复但没有固定的访问时间。

java中是否有允许恒定访问时间并允许重复的数据结构?

我知道我可以自己制作HashMap允许重复的,但我想使用已经存在的数据结构。

先感谢您。

4

2 回答 2

1

您可以使用Eclipse Collections中的BagGoogle Guava中的MultisetApache Commons Collections中的Bag。A基本上是 a ,其行为类似于 Collection。 BagMap<Key, Integer>

这三个库也都有 Multimaps。AMultimap基本上是 a Map<Key, Collection<V>>,其中调用 put 导致添加到Collection<V>而不是替换该键处的值。有不同类型的Multimap( List, Set, Bag, 等)。

注意:我是 Eclipse Collections 的提交者

于 2015-03-21T21:16:59.000 回答
1

ArrayList#get并且ArrayList#set实际上是常数时间,以及其他一些函数。阅读文档,类文档的第二段:

size、isEmpty、get、set、iterator 和 listIterator 操作在恒定时间内运行

您的下一个选择是多图。这是一个以键/集合方式存储项目的映射。集合保存值,因此单个键映射到多个值。您可以查看 Apache Common MultiMap,看看他们是否有适合您的实现。或者您可以随时创建自己的,只需将集合定义为值:

Map<String, List<String>> multimap;
于 2015-03-21T19:56:26.867 回答