黑马程序员技术交流社区
标题:
关于集合的遍历与修改
[打印本页]
作者:
frankzheng329
时间:
2015-4-25 11:41
标题:
关于集合的遍历与修改
我们修改集合内的元素时,常常需要遍历整个集合,找出符合条件的元素对其进行修改(比如删除),此时很容易联想到JDK提供的遍历的方法。如下
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
复制代码
for(Integer element:list) {
if(element==2) {
list.remove(element);
}
if(element==3) {
//might work or might throw exception, Java calls it indefined behaviour:
iterator.remove();
}
}
复制代码
此时我们发现,运行出现意想不到的运行结果甚至抛出异常。这是因为删除了集合内部元素,导致了指针的混乱,无法有效的遍历集合。
通过查询资料,发现利用Iterator 遍历可以达到同时删除的效果
Iterator<Integer> iterator = list.iterator();
while(iterator.hasNext()) {
Integer element = iterator.next();
if(element==2) {
iterator.remove();
}
if(element==3) {
//might work or might throw exception, Java calls it indefined behaviour:
iterator.remove();
}
}
复制代码
另外虽然Integer 是封装类但是不能改变在集合中的Integer 对象的值.可以用一个新的集合来存储新生成的Integer对象来达到目的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2