是谁实现了Iterator接口?

   如果应用Java集合框架,很多时候都会用到Iterator接口类型的对象对集合中的元素进行遍历。但寻遍Java API帮助文档,却找不到任何类实现了Iterator接口。那么到底是谁实现了这个接口呢?

其实,因为不同集合实现类后台工作的数据结构有所不同,所以没有办法用一个类来实现Iterator接口,可以使之适用于所有集合。这样,实现Iterator接口的任务就落到了集合实现类自己身上。

由于实现了Iterator接口的类仅与具体的集合实现类有关,所以这个类被设计成了私有的内部类,也正因为这样我们在帮助文档中看不到这个类的说明。

下面以数组实现的线性表为例,做一个简单的演示,相信看过了这段代码,大家就会清楚了。

说明:我们这里主要是讲解Iterator接口的使用,所以在这个例子中只提供了add和get两个方法,以减少代码,便于大家阅读。

package javase.study.oldboy;

import java.util.Iterator;
public class OurArrayList<E> implements Iterable<E> {
    
private E[] datas;
    
private int size;

    
public OurArrayList() {
        
this(16);
    }


    @SuppressWarnings(
"unchecked")
    
public OurArrayList(int capacity) {
        datas 
= (E[]) new Object[capacity];
        size 
= 0;
    }


    @SuppressWarnings(
"unchecked")
    
public void add(int index, E obj) {
        
if (size >= datas.length) {
            E[] newData 
= (E[]) new Object[datas.length * 2 + 1];
            System.arraycopy(datas, 
0, newData, 0, datas.length);
            datas 
= newData;
        }


        
for (int i = size - 1; i >= index; i--)
            datas[i 
+ 1= datas[i];
        datas[index] 
= obj;
        size
++;
    }


    
public E get(int index) {
        
if (index < size) {
            
return (E) datas[index];
        }
 else
            
return null;
    }


    
public Iterator<E> iterator() {

        return new Itr<E>();
    
 }
      
      private class Itr implements Iterator {
        int count = 0;
       
public boolean hasNext() {
           
return count < size;
       }


      
public E next() {
           
return get(count++);
       }


       @Override
      
public void remove() {
           
// TODO Auto-generated method stub
       }


      }
}



----------------------------------
把人做到宽容,把技术做到强悍。

posted on 2008-03-28 12:29 OldBoy 阅读(871) 评论(2)  编辑  收藏 所属分类: Java基础

评论

# re: 是谁实现了Iterator接口? 2008-12-07 13:10 T

果然如此,和我想的一样  回复  更多评论   

# re: 是谁实现了Iterator接口? 2009-06-18 19:03 xiaoman

天哪,这都是什么东东啊?  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 
<2009年6月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

导航

统计

常用链接

留言簿(1)

随笔分类

随笔档案

文章分类

文章档案

相册

搜索

最新评论

阅读排行榜

评论排行榜