![]() |
1
4
在我的一个问题中向我推荐的是Apache Commons MultiMap: http://commons.apache.org/collections/api-3.2.1/org/apache/commons/collections/MultiHashMap.html
它在内部使用ArrayList,但我想您可以将其更改为使用HashSet之类的东西。我会看看
更新:事实上,Guava的HashMultiMap似乎已经是我所说的: https://github.com/google/guava/blob/master/guava/src/com/google/common/collect/Multimap.java 我查看了源代码,似乎每个值集合实际上都有一个HashSet支持。 |
![]() |
2
2
注: Java并发实践清单5.19 :
|
![]() |
3
1
我可以向你推荐潜在的候选人。如果它是完全读取的,那么ImmutableMultiMap可能是一个很好的选择。 如果你需要的话 如果有很多行,也可以从使用ConcurrentHashMap和同步列表开始。这可以显著减少争用,这可能足以解决性能问题,而且很简单。 |
![]() |
4
1
|
![]() |
5
0
当你提到你“在一个大地图上迭代,找出匹配的键”时,我不禁怀疑你是否使用了最好的数据结构。有没有办法避免这种迭代? 请注意,Guava包含多个具有不同性能特征的multimap实现。正如Zwei所提到的,不可变多重映射比可变多重映射具有更好的性能。如果代码检查multimap是否包含特定值,setmultimap会更快;否则,ArrayListMultimap的性能会更好。 |