我有一个涉及加载“PlayerValue”对象的系统。对象的格式如下:[标题]值。我将这些保存在文本文件中,每当我保存或读取文件时,我想删除重复的标题。所以我这样做了:
首先,我将文件中的所有 PlayerValues 加载到名为“array”的 ArrayList 中,然后:
for (PlayerValue v : array) {
for (PlayerValue v1 : array) {
if (v1.header.equals(v.header)) {
array.remove(v1);
}
}
}
在这里您可以看到,它会遍历数组的每个项目,然后对于每个项目,它会再次在数组中搜索相同的 header 。
这将有效地删除重复的 header ,但它会抛出 ConcurrentModificationException。
有什么解决办法吗?
最佳答案
即使这有效,这也不是删除重复项的糟糕方法。更好的选择是 Map<Header, PlayerValue>
:
Map<String, PlayerValue> map = new HashMap<>();
for (PlayerValue v : array)
map.put(v.header, v);
现在您可以迭代此映射的条目,其中不包含重复的键( header ):
array.clear();
for (Entry<?, PlayerValue> e : map.entrySet())
array.add(e.getValue());
关于java - 双重嵌套for循环迭代(ArrayList),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19339388/