我有一个涉及加载'PlayerValue'对象的系统。对象的格式如下:[Header]值。我将这些保存在文本文件中,每当我保存或从文件中读取时,我想删除重复的标题。所以我这样做了:
首先,我将文件中的所有PlayerValues加载到名为'array'的ArrayList中,然后:
for (PlayerValue v : array) {
for (PlayerValue v1 : array) {
if (v1.header.equals(v.header)) {
array.remove(v1);
}
}
}
在这里你可以看到,它遍历数组的每个项目,然后对于每个项目,它再次搜索数组中的相同标题。
这会有效地删除重复的标头,除了它抛出ConcurrentModificationException之外。
任何解决方案的帮助?
答案 0 :(得分:2)
即使这样有效,删除重复项也是一种不好的方法。更好的选择是拥有Map<Header, PlayerValue>
:
Map<String, PlayerValue> map = new HashMap<>();
for (PlayerValue v : array)
map.put(v.header, v);
现在您可以遍历此地图的条目,这些条目不包含重复的键(标题):
array.clear();
for (Entry<?, PlayerValue> e : map.entrySet())
array.add(e.getValue());