【问题标题】:How to fix error java.util.ConcurrentModificationException?如何修复错误 java.util.ConcurrentModificationException?
【发布时间】:2016-11-17 04:30:28
【问题描述】:

java.util.ConcurrentModificationException 有一些问题。当我在自动完成文本中删除一个或多个字符时,我强制关闭。有人知道那会发生什么吗?该问题的解决方案是什么?

谢谢。

【问题讨论】:

    标签: android arraylist autocompletetextview


    【解决方案1】:

    您似乎同时在收藏夹中添加和删除某些内容。通过这样做,您可以在单个时间点多次在结构上修改集合。因此,您将获得java.util.ConcurrentModificationException,这是在您的集合中使用“快速失败”迭代器的结果。 您可以查看此链接,该链接解释了故障安全和故障快速迭代器。 what-is-fail-safe-fail-fast-iterators-in-java-how-they-are-implemented 并查看 Stephen C 写的答案。

    【讨论】:

    • 你有解决这个问题的代码示例吗?
    • 这很简单,就像我说的那样,如果您尝试在同一给定时间点从结构上修改您的集合,那么您用来遍历该集合的迭代器将会失败。检查下面这个示例 sn-p:ArrayList<String> sampleList = new ArrayList<String>(); sampleList.add("hello"); sampleList.add("world"); Iterator<String> sampleListItr = sampleList.iterator(); //If you try to remove first item from list, your iterator fails sampleList.remove(0); while(sampleListItr.hasNext()){ System.out.println(sampleListItr.next()); } 所以尽量避免使用迭代器。
    • 你可以通过不使用迭代器来避免这个问题。 Java 8 为您提供了foreach 方法来帮助您遍历任何集合。
    猜你喜欢
    • 2012-07-09
    • 2013-11-08
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 2014-05-18
    • 2012-11-28
    • 1970-01-01
    相关资源
    最近更新 更多