HashMap
具有不变的访问时间,但不允许重复。 ArrayList
允许重复,但没有持续的访问时间。
java中是否存在允许持续访问时间并允许重复的数据结构?
我知道我可以创建自己的HashMap
,允许重复,但我想使用已有的数据结构。
提前谢谢你。
答案 0 :(得分:1)
ArrayList#get
和ArrayList#set
实际上是常量时间,以及其他一些功能。阅读课程文档第二段的documentation:
size,isEmpty,get,set,iterator和listIterator操作在常量时间中运行
您的下一个选项是多地图。这是一个以密钥/集合方式存储项目的映射。该集合保存值,因此单个键映射到多个值。您可以查看Apache Common的MultiMap
,看看他们是否有适合您的实现。或者您可以随时创建自己的,只需将集合定义为值:
Map<String, List<String>> multimap;
答案 1 :(得分:1)
您可以使用Bag中的GS Collections,Multiset中的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的开发人员