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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曾小贤OL 中级黑马   /  2014-8-8 10:20  /  1528 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

创建一个迭代器怎么去调用?具体方法,一直不理解。先谢了。

点评

请注意诚心提问.  发表于 2014-8-9 23:25

8 个回复

倒序浏览
借花献佛了
实现迭代器取出集合对象的三个步骤
通过集合对象的iterator方法,获取迭代器对象,返回的是一个接口的实现类
使用迭代器对象的hasNext()方法,判断集合中还有没有对象可以被取出
使用迭代器对象的next()方法直接获取存储到集合中的对象
    迭代器是获取存储到集合的对象的通用方式
    注意,如果迭代器已经获取完了,再次获取,出现没有元素被取出异常

public static void main(String[] args){
                method();
        }       
        public static void method(){
                Collection col=new ArrayList();
                col.add("abc1");
                col.add("abc2");
                col.add("abc3");
                col.add("abc4");
                       
            //第一步,iterator方法是集合所有子类都有的,调用集合的这个方法,获取迭代器对象
                Iterator it=col.iterator();
                //boolean hasNext() 使用迭代器中的hasNext()方法,判断集合中还有没有下一个被取出的元素,有就返回true
                while(it.hasNext()){
                        //调用迭代器的next()方法获取对象
                        Object obj=it.next();
                        System.out.println(obj);
                }
                //for循环遍历获取
                for(Iterator it2=col.iterator();it2.hasNext();){
                        System.out.println(it2.next());
                }
          
               
        }

回复 使用道具 举报 2 0
迭代器不是你创建的,是从可迭代集合对象获取到的
其他的看楼上都有了
回复 使用道具 举报
2楼很详细了已经,就是取出集合中元素的方式,,我也刚看到这里,首先判断hasNext为真,就继续读取元素next
,记住这两个方法就可以了
回复 使用道具 举报
恩,二楼说的很清楚了,不过有点需要记住,你迭代器调用next方法时是会导致迭代器指针发生偏移的。所以你在调用次hasNext方法时只能调用一次next方法,当你迭代到最后个元素时你此时的指针就再没有指向任何元素。
回复 使用道具 举报
集合要支持迭代器,然后迭代调用迭代器里的方法吧
回复 使用道具 举报
liqi 中级黑马 2014-8-8 21:16:25
7#
怀念黑海岸 发表于 2014-8-8 13:44
恩,二楼说的很清楚了,不过有点需要记住,你迭代器调用next方法时是会导致迭代器指针发生偏移的。所以你在 ...

说的是不是下面的代码:
   Iterator it=col.iterator();
              
                 while(it.hasNext()){
                        //调用迭代器的next()方法获取对象
                        Object obj=it.next();
                        System.out.println(obj);
                }
  
                while(it.hasNext()){
                        //调用迭代器的next()方法获取对象
                        Object obj=it.next();
                        System.out.println(obj);
                }
第二个  while(it.hasNext())中的条件it.hasNext()为假
回复 使用道具 举报
liqi 发表于 2014-8-8 21:16
说的是不是下面的代码:
   Iterator it=col.iterator();
              

对的,因为你迭代器已经把指针指向了末尾了,此时你再去向后遍历他肯定返回false了,但是如果你使用的ListIterator的话那么允许你向前迭代,这个是可行的。
但是我的意思不是这样子的哦,我的意思是迭代器中你判断一次不能使用两次next方法,这样子会导致你遍历数组中的元素不完整。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马