【发布时间】:2016-11-17 04:30:28
【问题描述】:
java.util.ConcurrentModificationException 有一些问题。当我在自动完成文本中删除一个或多个字符时,我强制关闭。有人知道那会发生什么吗?该问题的解决方案是什么?
谢谢。
【问题讨论】:
标签: android arraylist autocompletetextview
java.util.ConcurrentModificationException 有一些问题。当我在自动完成文本中删除一个或多个字符时,我强制关闭。有人知道那会发生什么吗?该问题的解决方案是什么?
谢谢。
【问题讨论】:
标签: android arraylist autocompletetextview
您似乎同时在收藏夹中添加和删除某些内容。通过这样做,您可以在单个时间点多次在结构上修改集合。因此,您将获得java.util.ConcurrentModificationException,这是在您的集合中使用“快速失败”迭代器的结果。
您可以查看此链接,该链接解释了故障安全和故障快速迭代器。
what-is-fail-safe-fail-fast-iterators-in-java-how-they-are-implemented 并查看 Stephen C 写的答案。
【讨论】:
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()); } 所以尽量避免使用迭代器。
foreach 方法来帮助您遍历任何集合。