for(对象 o:集合)
增强for 
会出错么?
貌似底层原理都是一样的,这些东西用的也是迭代器的原理,要出错应该都出错吧。。

解决方案 »

  1.   

    你也只是说了,用foreach只是容易出错,那么掌握不就好了!
      

  2.   

    怎么会呢  都是一样的
    如果是ArrayList  还是别用iterator  用ArrayList的get(int index)要好
      

  3.   

    对 这个很好用,代码清晰,代码量少。值得信赖。这个最好,集合用泛型。不会出错的,不用泛型只能这么用:for(object o:集合),之后还要强转。
      

  4.   

    除了数组,foreach用的就是iterator,在遍历时用add或remove可能会出错,如果确实需要在遍历时改变集合,可以参见java.util.concurrent包中的集合类
      

  5.   


    增强for在底层也是迭代器实现  for(迭代器名 : 集合名)
      

  6.   

    get
    E get(int index)返回列表中指定位置的元素。 参数:
    index - 要返回的元素的索引 
    返回:
    列表中指定位置的元素 
    抛出: 
    IndexOutOfBoundsException - 如果索引超出范围 (index < 0 || index >= size())list接口中提供了get方法 结合循环也能遍历
      

  7.   

    不一定啊!!比如list 就可以用list.size() 然后for循环!!
      

  8.   

    foreach就是使用的iterator,不然为什么要求实现Iterable接口。
      

  9.   

    foreach遍历的本质就是使用迭代器。
    因此在使用foreach遍历时不能修改集合的结构,不然会报错。
      

  10.   

    foreach针对数组和迭代器,都一样,按道理是不应该改集合结构的,如果要改,看什么数据结构,及迭代的实现方式,再决定会不会出错
      

  11.   

    foreach的遍历集合的中途,不能改变集合的(如删除某个元素)
      

  12.   

    如果是List集合直接建议使用for循环,如果是Map集合还是使用Iterator吧!
      

  13.   

    foreach用法主要用于数组,但是也可以用于任何Collection对象。、
    foreach可以对容器及数组进行遍历。
    Iterator只可以对容器进行遍历。
      

  14.   

    使用迭代器 不会的存在线程的安全问题,如果用for 或者是 增强for 在集合的增删操作的时候会出现错误的。
      

  15.   

    ConcurrentModificationException,由于你在迭代时修改了元素。你可以使用线程安全的集合去代替,就不会出错。比如CopyOnWriteArrayList。你要明白出错的本质是因为什么。主要是这些集合并不是线程安全的。
      

  16.   

    你可以使用迭代,增强循环,或者直接for循环
      

  17.   

    在不修改集合中的数据的时候,使用 foreach 并不容易出错。
    如果要在迭代中修改,那么分两种情况,
    一种是单线程,
    推荐直接使用 Iterator,循环中判断 next 出来的数据如果不用,调用 remove 即可。
    一种是多线程,
    这时需要加锁保证一个线程在迭代的时候,其它线程不能修改这个集合,否则可能出错(数据较少时,比较难出现错误,因为可能一个线程迭代完后,CPU 才来得及处理其它线程)。