【问题标题】:checkForComodification in search method搜索方法中的 checkForComodification
【发布时间】:2014-11-18 11:31:46
【问题描述】:

在我的一个 java 项目中,一个类初始化一个 Balance 对象的 ArrayList。每个 Balance 都有一个 accountNum 和一个返回 accountNum 的 getter 方法 getAccountNum()。 searchAccount() 方法搜索 accountNum 并返回具有给定 AccountNum 的对象。这里是搜索方法。 itr 是 ArrayList 的迭代器

    public Balance searchAccount(long accountNum){
        Balance b = new Balance();
        while(itr.hasNext()){
            b = itr.next();
            if(b.getAccountNum() == accountNum)
                return b;
        }
        return null;
    }

它会检查 Comodification 异常。我哪里错了?

【问题讨论】:

  • 在哪一行抛出异常? b.getAccountNum 是做什么的?
  • 您何时/在何处初始化itr?在使用它的相同方法中初始化它可能是一个更好的主意。
  • 也许某个线程修改了集合,而您正在迭代其他集合?

标签: java arraylist iterator


【解决方案1】:

您正在迭代的列表可能在其他地方被修改,因为它不是本地的(您在其他地方声明并初始化它)。将其设为本地,将其副本传递给方法或使用CopyOnWriteArrayList (https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CopyOnWriteArrayList.html)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-12
    • 2017-08-23
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多