如何删除JAVA集合中的元素
经常我们要删除集合中的某些元素。有些可能会这么写。
public void operate(List list){
for (Iterator it = list.iterator(); it.hasNext();) {
String str = (String)it.next();
if (str.equals("chengang")){
list.remove(str);
}
}
}
这种写法一运行就会报如下异常:
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:449)
因为list在循环中的时候是不可以删除它的元素的。后来我是这样做的,一种很笨的方法,思路是这样的:创建一个List专门存放要被删除的元素,循环过后,用List.removeAll方法把元素删除。代码如下:
public void operate(List list){
List removeList= new ArrayList();
for (Iterator it = list.iterator(); it.hasNext();) {
String str = (String)it.next();
if (str.equals("chengang")){
removeList.add(str);
}
}
list.removeAll(removeList);
}
这样也确实可以解决问题了,但是方法实在太笨重,其实可以有更简单的更高效的方法,就是用Iterator.remove方法,如下:
for (Iterator it = list.iterator(); it.hasNext();) {
String str = (String)it.next();
if (str.equals("chengang")){
it.remove();
}
}
所以,你对Java的基础知识了解越多,代码就会写得越简洁。相反如果你的代码特别复杂,则方法或设计一定有问题。
最新文章
- Mybatis学习记录(七)----Mybatis查询缓存
- windows 支持curl命令
- svg学习笔记(一)
- PHP实现简易的模板引擎
- NFinal学习笔记 03—代码生成器
- Web前端,高性能优化
- Openjudge-计算概论(A)-比饭量
- js自写字符串 append 方法
- ruby安装sass报错解决办法
- PowerShell工作流学习-6-向脚本工作流添加检查点
- jquery向Django后台发送数组
- 错误代码:0x80070032 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
- Qt 布局管理
- Linux初级入门(一)
- Go语言之进阶篇 netcat工具的使用
- iOS开发之旅:实现一个APP界面框架
- web测试小结
- sql or语法
- Uva10048 Audiophobia (Floyd)
- TCP heart