- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
来自 AtomicLongMap 的文档:
Note: If your values are always positive and less than 2^31, you may wish to use a Multiset such as ConcurrentHashMultiset instead. Warning: Unlike Multiset, entries whose values are zero are not automatically removed from the map. Instead they must be removed manually with removeAllZeros().
它表明您可能希望使用 Multiset。我的问题是,Multiset 比 AtomicLongMap 有什么好处?选择仅包含正值的映射时应考虑哪些因素?使用 Multiset 的唯一原因是我不需要手动调用 removeAllZeros()
吗?
最佳答案
Multiset在概念上是不同的。首先,它是一个 Collection
, 所以它可以用作 Collection ,而 AtomicLongMap
不是集合(也不是 map )。多重集表示一组可能重复的元素,要对它们的计数执行数学运算,您可以添加或删除元素。 AtomicLongMap
方法名称更符合 AtomicLong
类并明确假设您正在对值执行数学运算。一种或另一种实现可能不支持某些操作。比如有addAndGet
和 getAndAdd
行动 AtomicLongMap
,但是Multiset
只有add
类似getAndAdd
的方法.
因此虽然在许多情况下这些类是可以互换的,但请使用 ConcurrentHashMultiset
如果您将数据视为可能重复元素的集合。使用 AtomicLongMap
如果您将数据视为键和 long
之间的映射值(value)。
请注意,从 Java-8 开始,这些类可以很容易地用标准 JDK 替换 ConcurrentHashMap<K, Long>
.例如,您可以使用 map.merge(key, 1L, Long::sum);
增加映射值。
关于java - AtomicLongMap 与 ConcurrentHashMultiset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32046502/
我有以下类(class): public class Storage { protected static final AtomicLongMap MAP; protected Sto
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 5 年前。 Improve this ques
我使用 guava AtomicLongMap 来计算文档中的短语数。 AtomicLongMap frequentPhrases = AtomicLongMap.create(); frequent
来自 AtomicLongMap 的文档: Note: If your values are always positive and less than 2^31, you may wish to u
我有 Spring MVC 应用程序,允许为某事预留时间段。 用户选择时间间隔,然后开始填写一些数据(姓名、地址等)。但某一时间段内的预订数量有上限。 因此,当用户选择时间间隔并开始填写数据时,其他用
我是一名优秀的程序员,十分优秀!