A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈永波 初级黑马   /  2012-7-3 16:48  /  2011 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;
public class IteratorDemo {
        public static void main(String[] args) {
                List<String> all = new  ArrayList<String>();
                all.add("hello");
                all.add("-");
                all.add("world");
                Iterator<String> iter = all.iterator();
                while(iter.hasNext()){
                        String m = iter.next();
                        if("-".equals(m)){
                                all.remove(m);
                        }else{
                                System.out.print(m+",");                       //  为什么这里输出的不是:   hello  ,world
                        }
                }
               
                System.out.println("\n删除后的结果:"+all);
        }
}

输出:hello, 删除之后的集合是:[hello,world]对这个有点不理解,删除之后直接退出循环?

3 个回复

倒序浏览
  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import java.util.Iterator;

  4. public class Test1 {
  5.         public static void main(String[] args) {
  6.                 List<String> all = new ArrayList<String>();
  7.                 all.add("hello");
  8.                 all.add("-");
  9.                 all.add("world");
  10.                 Iterator<String> iter = all.iterator();
  11.                 while (iter.hasNext()) {
  12.                         String m = iter.next();
  13.                         if ("-".equals(m)) {
  14.                                 iter.remove();
  15.                         } else {
  16.                                 System.out.print(m + ","); // 为什么这里输出的不是: hello ,world
  17.                         }
  18.                 }

  19.                 System.out.println("\n删除后的结果:" + all);
  20.         }
  21. }
复制代码
删除方法请不要调用 List 的,而应该调用 迭代器 Iterator 的 remove()方法。 如果调用List的,会把list中的元素删除,这样元素少了一个,后面的元素就会出现问题。
回复 使用道具 举报
初始列表:
hello
-
world
第一次循环,指针指向0,输出hello,列表如下:
hello <---
-
world
第二次循环,指针指向1,删除“-”,列表如下:
hello
world <---
第三次循环,指针指向2,这时该位置已经没有元素了。
注意不要在遍历列表时对列表进行增删操作。
回复 使用道具 举报
看看...........................
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马