gpt4 book ai didi

java - 添加列表中包含的元素并将它们映射到字符串

转载 作者:行者123 更新时间:2023-12-02 03:28:38 25 4
gpt4 key购买 nike

输入

SomeName SomeFine

OtherName OtherFine

SomeOtherName SomeOtherFine

OtherName SomeOtherFine

SomeName OtherFine

说明

我想做一个List<Map<String, Integer>>以便创建一份名单及其罚款总额

预期输出

我期望的输出(引用上面的示例)是这样的:

[SomeName=SomeFine+OtherFine, OtherName=OtherFine+SomeOtherFine, SomeOtherName=SomeOtherFine]

代码

我尝试使用以下代码,但它给了我 ConcurrentModificationException 。代码如下:

public List<Map<String, Integer>> calculateTotalFine(){

List<Map<String, Integer>> myMapList = new ArrayList<Map<String, Integer>>();

ListIterator<CrimeInfo> crimeIterator = list.listIterator();
while(crimeIterator.hasNext()){
String key = crimeIterator.next().getName();
Integer value = crimeIterator.next().getFine();

if(myMapList.isEmpty()){
Map<String, Integer> aMap = new HashMap<String, Integer>();
aMap.put(key, value);
myMapList.add(aMap);
}

else{
Iterator<Map<String, Integer>> mapIterator = myMapList.iterator();
while(mapIterator.hasNext()){
if(mapIterator.next().containsKey(key)){ //<-- Line no. 29
Integer newFine = mapIterator.next().get(key) + value;
mapIterator.remove();

Map<String, Integer> nMap = new HashMap<String, Integer>();
nMap.put(key, newFine);
myMapList.add(nMap);
}
else{
Map<String, Integer> newMap = new HashMap<String, Integer>();
newMap.put(key, value);
myMapList.add(newMap);
}
}
}
}
return myMapList;
}

实际输出

Exception in thread "main" java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901) at java.util.ArrayList$Itr.next(ArrayList.java:851) at com.company.CoreLogic.calculateTotalFine(CoreLogic.java:29)

谁能告诉我哪里出错了?

最佳答案

问题是您正在迭代 myMapList,但在迭代时修改它:

myMapList.add(newMap);

我还没有完全掌握你想要做什么,但从根本上来说,你不应该在迭代集合时添加内容。一种常见的方法是创建一个集合,您可以在迭代时修改该集合,然后(如果需要)随后对原始集合执行批量修改。

(正如 Titus 所说,您还在循环中调用 next() 两次...您需要更加小心如何使用迭代器,并使用增强的 for 循环如果可能的话。)

关于java - 添加列表中包含的元素并将它们映射到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38409852/

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