黑马程序员技术交流社区

标题: 并发修改问题 [打印本页]

作者: 梦想的小草    时间: 2016-9-3 22:40
标题: 并发修改问题
增强for循环迭代:
原则上map集合是无法使用增强for循环来迭代的,因为增强for循环只能针对实现了Iterable接口的集合进行迭代;Iterable是jdk5中新定义的接口,就一个方法iterator方法,只有实现了Iterable接口的类,才能保证一定有iterator方法,java有这样的限定是因为增强for循环内部还是用迭代器实现的,而实际上,我们可以通过某种方式来使用增强for循环。
for(Objectobj : map.entrySet()) {
  Map.Entry entry = (Entry) obj;  // obj 依次表示Entry
  System.out.println(entry.getKey()+ "=" + entry.getValue());
}
集合迭代注意问题:在迭代集合的过程中,不能对集合进行增删操作(会报并发访问异常);可以用迭代器的方法进行操作(子类listIterator:有增删的方法)。
增强for循环注意问题:在使用增强for循环时,不能对元素进行赋值;
int[] arr= {1,2,3};
for(intnum : arr) {
  num = 0; //不能改变数组的值,否则抛出并发修改异常
}
System.out.println(arr[1]);

作者: 袁志娜    时间: 2016-9-3 22:51
这个在社招面试的时候会问的
作者: qq101213    时间: 2016-9-3 23:27
用迭代器本身的方法就可以做修改了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2