gpt4 book ai didi

Java ConcurrentSkipListMap 键集到数组

转载 作者:行者123 更新时间:2023-12-02 06:52:30 24 4
gpt4 key购买 nike

我尝试使用以下行从 ConcurrentSkipListMap 获取键数组:

myArray=(String[])myMap.keySet().toArray(new String[myMap.size()]);

但是没有成功,结果数组中的所有项目都是相同的,为什么?

最佳答案

这按预期工作:

Map<String, String> myMap = new ConcurrentSkipListMap<>();
myMap.put("a", "b");
myMap.put("b", "c");
String[] myArray= myMap.keySet().toArray(new String[myMap.size()]);
System.out.println(Arrays.toString(myArray));

和输出:

[a, b]

请注意,这不是原子的,因此如果您的映射在调用 sizetoArray 之间进行修改,则会发生以下情况:

  • 如果新 map 较小,myArray 的大小将大于您在 new String[myMap.size()] 中创建的数组
  • >
  • 如果新 map 更大,myArray 将包含空项目

因此,在这种情况下,保存对 size 的调用并避免(可能)不必要的数组创建可能是有意义的,只需使用:

String[] myArray= myMap.keySet().toArray(new String[0]);

关于Java ConcurrentSkipListMap 键集到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17840681/

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