gpt4 book ai didi

java - 有序(自然插入顺序)和线程安全的 Java Map

转载 作者:行者123 更新时间:2023-12-01 04:39:21 31 4
gpt4 key购买 nike

我有一个旧应用程序,其中使用 ConcurrentHashMap。现在我们知道并发HasMap 是无序的,但是需要读取最初插入的对象。我已经在生产中使用了一段时间的代码,因此我正在寻找快速替代方案来替换该集合,并且也可以给我订购。基本上寻找一种非常非侵入性的解决方案,从而最大限度地减少代码更改。我在网上搜索并找到了 ConcurrentSkipListMap 作为替代方案,但它对我不起作用。原因是,默认情况下它按照键的自然顺序进行排序,这对我不起作用。由于我的键是字符串,因此我需要根据插入进行排序,而不是根据字符串键在映射中的自然排序方式进行排序。

请尽早提出一些替代方案。

谢谢阿努巴夫

最佳答案

您应该能够使用 LinkedHashMap 来保留插入顺序,并使用 Collections.synchronizedMap(Map map) 方法使其同步 .

public class Test {
Map<String, String> map = new LinkedHashMap<>();
Map<String, String> test = Collections.synchronizedMap(map);

public void test() {
test.put("Z", "Zed");
test.put("A", "Ay");
for (String s : test.keySet()) {
System.out.println(s);
}
}

public static void main(String args[]) {
try {
new Test().test();
} catch (Throwable t) {
t.printStackTrace(System.err);
}
}

}

打印:

Z
A

按照您的要求。

关于java - 有序(自然插入顺序)和线程安全的 Java Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16835795/

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