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();
注意代码中的注释,在 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();
相关文章推荐
- @override在jdk1.5和jdk1.6中的不同表现
- String.intern() 方法__jdk1.6与jdk1.7的不同
- paip.jdk1.4 1.5(5.0) 1.6(6.0) 7.0 8.0特点比较与不同
- JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载
- JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载(转载)
- 已安装jre1.7的情况下安装jdk1.6
- JDK 1.6 与JDK1.7的区别
- JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载
- Java JDK1.5、1.6、1.7新特性整理(转)
- jdk1.5,jdk1.6,jdk1.7新特性
- JDK1.5/1.6/1.7之新特性总结
- jdk1.5 jdk1.6 jdk1.7 jdk1.8 特性
- aip.jdk1.4 1.5(5.0) 1.6(6.0) 7.0 8.0特点比较与不同
- jdk1.6 的 HashMap 源码分析及1.7,1.8的主要更改
- JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载
- JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载
- 本地安装jdk1.7后,由于Myeclipse使用默认的1.6,如何设置工程支持jdk1.7
- JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版整理
- ubuntu安装配置jdk1.6 jdk1.7
- JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载