您的位置:首页 > 编程语言 > Java开发

Collection.removeAll 在 JDK 1.6 和 JDK 1.7 上不同的表现

2014-04-12 10:02 369 查看
写如下 代码:

注意代码中的注释,在 JDK1.6下注释行将触发 java.util.ConcurrentModificationException 异常,而在 JDK1.7 下则是正常的。原因在于,JAVA 实现的 subList 都是引用,且在 JDK1.6 里面,collection 执行 subList 后,又执行 removeAll(targetList) ,这个方法是在 collection 中查找出现在 targetList 中的所有元素再删除。而JDK1.6 的实现可能没有处理这种情况,如果 targetList
就是自己的一部分,该怎么处理。而 JDK1.7 作了这样的处理,所以可以。

上述代码最好的写法是将 theInterestUrls.removeAll(getList); 这句换为 getList.clear();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: