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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 欧德林 中级黑马   /  2012-4-10 23:41  /  1917 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

老毕的视频看完了,没懂。找了一本书还是没懂。功力不够深厚啊。谁给我解释一下啊 。
目前就知道 迭代器,一定要跟着集合走。用于 遍历。
Iterator it =books.iterator();   这句话是创建了一个it迭代器?也没有new啊

付运行正确的代码

import java.util.*;
public class IteratorTest
{
        public static void main(String[] args)
        {
                //创建一个集合,并且加入元素
                Collection books =new HashSet();
                books.add("sun");
                books.add("moon");
                books.add("java");

                Iterator it =books.iterator();
                while (it.hasNext())
                {
                        //it.next()方法返回的数据类型是Object类型
                        //需要强制类型转换
                        String book =(String)it.next();
                        sop(book);
                if(book.equals("sun"))
                        {
                                it.remove();
                        }
                        book="test";
                }
               
                sop(books);
        }
        public static void sop(Object obj)
        {
                System.out.println(obj);
        }
}

4 个回复

倒序浏览
本帖最后由 曾晓文 于 2012-4-11 00:13 编辑

Iterator是集合类里面内部类。该内部类相当于集合类的成员,它可以访问集合中的数据。所以它把存在集合中的数据对象的引用封装到Iterator类中,向调用者提供各种操作方法。集合外只要拿到集合内部类 Iterator it =books.iterator(),该方法返回内部类 Iterator对象。通过该类就可以更方便的遍历集合数据了。
内部类Iterator是静态的,不用new
回复 使用道具 举报
集合类的根接口Collection,iterator()是Collection的一个方法,返回一个Iterator(迭代子),用于遍历集合的所有元素,所以你不用new.

迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。

  Java中的Iterator功能比较简单,并且只能单向移动:

  (1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。

  (2) 使用next()获得序列中的下一个元素。

  (3) 使用hasNext()检查序列中是否还有元素。

  (4) 使用remove()将迭代器新返回的元素删除。

  Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。
回复 使用道具 举报
创建对象不一定使用本类的构造方法(也就是使用new关键字)创建啊,如果另一个类的某个成员方法的返回值类型就是该类的话,同样可以创建。这里就是这样的,Collection类中的iterator()方法的返回值Iterator对象。下面是文档中该方法的定义:
Iterator<E> iterator()
           Returns an iterator over the elements in this collection.
回复 使用道具 举报
  Collection books =new HashSet() ,根据多态性 向下转型 books 成为Collection 类型的接口, 然后Collection接口中有一个Iterator() 方法返回的是Iterator接口,
   因此得到 Iterator it =books.iterator();  不用new
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马