java - 双重嵌套for循环迭代(ArrayList)

标签 java arraylist iteration

我有一个涉及加载“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/

相关文章:

java - ffmpeg 用于屏幕捕获?

java - java中如何从对象引用中获取值

java - 序列化和加密 ArrayList 对象时出现 StreamCorruptedException

python - 字典和类

arrays - 如何将命名列表转换为对象数组

java - 优雅地关闭线程和执行器

java - 如何从 Maven animal sniffer 插件中查找错误源?

python - 在遍历集合时修改集合

java - Android MenuItem showAsAction ="always"有组时被忽略

java - 字符串数组问题的数组列表