黑马程序员技术交流社区

标题: 迭代里有句话不理解。。。 [打印本页]

作者: 皮卫凯    时间: 2012-9-19 16:04
标题: 迭代里有句话不理解。。。
本帖最后由 皮卫凯 于 2012-9-19 16:28 编辑

class ArrayListTest
{   public static void sop(Object obj)
        { System.out.println(obj); }
     public static void main(String[] args)
     {
       ArrayList al = new ArrayList();
       al.add("java01");
       al.add("java02");
       al.add("java01");
      al.add("java02");
      al.add("java01");
      sop(al);
      al = singleElement(al);    //调用下面的方法
       sop(al);
     }
public static ArrayList singleElement(ArrayList al)   
{
  //定义一个临时容器。
  ArrayList newAl = new ArrayList();
  Iterator it = al.iterator();
  while(it.hasNext())
      {
        Object obj = it.next();    //这句话怎么理解?一般迭代器都是遍历打印。
        
         if(!newAl.contains(obj))   //如果newA1不包含该元素 就添加到newA1中。
        newAl.add(obj);
      }
  return newAl;
}
}

也可以这样写:
  if(!newAl.contains(it.next())

    newAl.add(it.next());

作者: 王自强    时间: 2012-9-19 16:24
  1. public static ArrayList singleElement(ArrayList al)   
  2. {
  3.   ArrayList newAl = new ArrayList();
  4.   Iterator it = al.iterator();
  5.   while(it.hasNext())
  6.       {
  7.         Object obj = it.next();//第7行。
  8.         //楼主知道it.next()返回的是元素的值吧,用obj把这个值记住,方便对其进行操作。
  9.                 //如果不用obj把这个值记住,那么代码如下
  10.                 /*
  11.                 if(!newAl.contains(it.next())//第11行。这样就再次调用了it.next()方法,这个it.next()返回的元素,
  12.                         与第7行中的it.next()返回的元素是不一样,第11行调用的it.next()方法返回的 是第7行中的方法返回元素的下一个元素!
  13.                 newAl.add(it.next());返回值是第11行方法返回值的下一个元素。
  14.                 */
  15.                 //所以在第7行中把元素的值记住,这样方便对其进行操作。
  16.          if(!newAl.contains(obj))   //操作的是第7行方法返回的元素。
  17.         newAl.add(obj);//操作的是第7行方法返回的元素
  18.       }
  19.   return newAl;
  20. }
复制代码

作者: 赵永康    时间: 2012-9-19 16:42
  Object obj = it.next();    //这句话怎么理解?一般迭代器都是遍历打印。??
it.next();    是用迭代器取出集合中的元素,因为你对你的集合没有加泛型,所以不知道集合里面存贮的具体元素类型,所以就用Object这个所有类的父类记住。假如你加入了泛型,就可以直接写具体的类型了  也不用强转的!





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