gpt4 book ai didi

Java Sort Map 更改键

转载 作者:行者123 更新时间:2023-11-29 04:55:48 26 4
gpt4 key购买 nike

我有以下测试应用程序。我的目标是更改 SortMap 中的所有键。通过底部的这段代码,我得到了一个 java.util.ConcurrentModificationException

我现在的问题是如何做到这一点。我认为使用迭代器可以正常工作。

public TestClass() {
final SortedMap<String, String> sm = new TreeMap<>();
sm.put("1", "one");
sm.put("2", "two");
sm.put("3", "three");
sm.put("4", "four");
sm.put("5", "five");

System.out.println(sm);

for (final Iterator<String> iterator = sm.keySet().iterator(); iterator.hasNext();) {
final String next = iterator.next();
sm.put(next + "-shifted", sm.remove(next));
}

System.out.println(sm);

}

public static void main(String[] args) {
new TestClass();
}

最佳答案

问题是您在迭代时同时添加和删除元素(并且您也没有通过迭代器删除)。

据我所知,无法替换现有的 key ,所以我认为最简单的选择是使用 sm 的条目构建一个新 map 。

final SortedMap<String, String> sm2 = 
sm.entrySet()
.stream()
.map(e -> new AbstractMap.SimpleEntry<>(e.getKey() + "-shifted", e.getValue()))
.collect(Collectors.toMap(Map.Entry::getKey,
Map.Entry::getValue,
(v1, v2) -> {throw new IllegalStateException();},
TreeMap::new));

关于Java Sort Map 更改键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33804165/

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