gpt4 book ai didi

java - 如何避免以下代码中的Java.util.IllegalStateException?

转载 作者:行者123 更新时间:2023-12-02 06:16:35 25 4
gpt4 key购买 nike

我有一个包含重复值的整数列表。我需要做的是找到重复的整数,添加它们的值,然后通过删除找到的重复项将结果添加到列表中。这是我正在做的事情:

List<Integer> list1 = new ArrayList<Integer>();
list1.add(2);
list1.add(5);
list1.add(3);
list1.add(5);
list1.add(4);

List<Integer> list2 = new ArrayList<Integer>();
Iterator<Integer> it = list1.iterator();
while (it.hasNext()) {
Integer int1 = it.next();
if (list2.isEmpty()) {
list2.add(int1);
it.remove();
} else {
ListIterator<Integer> it2 = list2.listIterator();
while (it2.hasNext()) {
Integer int2 = it2.next();
if (int2 != int1) {
it2.add(int1);
it.remove();// I get exception here

} else {
it2.remove();
it.remove();
Integer newint = int1 + int2;
it2.add(newint);
}
}
}
}
for(Integer in : list2){
System.out.println(in);
}

输出应该类似于
2<br/>
10<br/>
3<br/>
4

感谢您的宝贵时间。

最佳答案

正如其他发帖者所说,迭代时无法删除。尽管存在“技巧”,但在迭代时弄乱集合肯定会导致奇怪的运行时错误。

无论如何,你在解决这个问题上太过努力了。

这是一个快速但肮脏的解决方案,其中包含一小部分代码:

private List<Integer> sumAndUniqDuplicates(List<Integer> list) {
LinkedHashMap<Integer, Integer> lookup = new LinkedHashMap<Integer, Integer>();
for (Integer value : list) {
Integer prevValue = lookup.get(value);
prevValue = (prevValue == null) ? 0 : prevValue;
lookup.put(value, prevValue + value);
}
return new ArrayList<Integer>(lookup.values());
}

关于java - 如何避免以下代码中的Java.util.IllegalStateException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7654445/

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