gpt4 book ai didi

java - 如何自动增加 HashMap 中的键?

转载 作者:行者123 更新时间:2023-11-29 04:23:40 24 4
gpt4 key购买 nike

我有一个多线程应用程序。多个线程将事物放入 Map 中,其中每个事物都必须具有唯一的 ID。现在我正在为此目的使用 TreeMap,如下所示:

TreeMap<Integer, Thing> things = new TreeMap<>();
things.put(things.isEmpty() ? 0 : things.lastKey() + 1, thing);

但是 TreeMap 不是线程安全的,所以我决定用 ConcurrentHashMap 替换它。

但是我怎样才能使用 HashMap 实现相同的目的呢?那么如何为我放入其中的每个东西生成一个新的唯一 key 呢?

最佳答案

您可以使用 Java 的 AtomicInteger 类生成唯一的整数。为此,它有一个线程安全的 getAndIncrement() 方法。

但是,即使使用不同的键,这也可能导致 HashMap 出现一些不可预测的错误。此处列出了一些示例:Is a HashMap thread-safe for different keys?

所以一定要使用线程安全的映射,或者其他一些更快的线程安全数据结构,比如 Vector。如果您知道将添加多少元素的上限,则使用具有 AtomicInteger 索引的数组是最快的,因为您可以避免所有同步。

关于java - 如何自动增加 HashMap 中的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47595247/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com