一种java数据结构,具有持续访问时间并允许重复

时间:2015-03-21 19:50:13

标签: java hashmap duplicates constant-time

HashMap具有不变的访问时间,但不允许重复。 ArrayList允许重复,但没有持续的访问时间。

java中是否存在允许持续访问时间并允许重复的数据结构?

我知道我可以创建自己的HashMap,允许重复,但我想使用已有的数据结构。

提前谢谢你。

2 个答案:

答案 0 :(得分:1)

ArrayList#getArrayList#set实际上是常量时间,以及其他一些功能。阅读课程文档第二段的documentation

  

size,isEmpty,get,set,iterator和listIterator操作在常量时间中运行

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

Map<String, List<String>> multimap;

答案 1 :(得分:1)

您可以使用Bag中的GS CollectionsMultiset中的Google Guava或来自Apache Commons Collections的Bag。 Bag基本上是Map<Key, Integer>,其行为类似于Collection。

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

注意:我是GS Collections的开发人员