您的位置:首页 > 大数据 > 人工智能

自定义一个迭代器并通过main函数测试成功

2016-02-26 08:13 260 查看
public class MyIterator {

//测试主函数
public static void main(String[] args) {

List<String > nameList=new ArrayList<String>();

nameList.add("zhangsan");

nameList.add("lisi");

nameList.add("wangwu");

nameList.add("zhaoliu");

IIterator<String> it=nameList.iterator();

while (it.hashNext()) {
String  string  = (String ) it.next();
System.out.println(string);

}

System.out.println("<------------分割线------------->");

for(int i=0;i<nameList.size();i++){
System.out.println(nameList.get(i));

}
}

}

// 迭代器角色接口

interface IIterator<T> {
public boolean hashNext();// 判断是否有下一个元素

public T next();// 获取下一个元素的内容

}

// 创建一个类来实现自定义IIterator这个接口

class MyIterator1<T> implements IIterator<T> {
private List<T> list = null;// MyIterator1有一个List接口的属性
private int index = 0;// 访问到容器中元素的
4000
当前下标
// 创建一个迭代器对象的时候接收要被迭代的具体的容器对象

public MyIterator1(List<T> list) {
this.list = list;
}

// 实现接口方法
// 判断是否有下一个元素
@Override
public boolean hashNext() {
return index < list.size();
}

// 取出下一个元素
@Override
public T next() {
return  (T) list.get(index++);
}

}

// 定义一个容器接口

interface List<T> {
public void add(T obj);// 给具体的容器添加元素

public T get(int index);// 获取指定位置上的元素

public int size();// 获得容器中的元素个数

public IIterator<T> iterator();// 得到具体的迭代器对象

}

// 定义一个泛型类实现List接口

class ArrayList<T> implements List<T> {
private Object[] obj = null;// 声明一个Objiect类型的数组
private int index;// 数组的下标
private int size;// 记录数组中元素的个数
public ArrayList () {
obj=new Object[10];//给数组设定一个值是固定的,不让数组超过数组的容量
index=0;
size=0;

}
@Override
public void add(T obj) {

this.obj[index++]=obj;//把数据存放到数组中

size++;//元素的个数加一

}

@SuppressWarnings("unchecked")//添加一个压制警告就不会出现警告,处女座情节
@Override
public T get(int index) {
return (T) this.obj[index];
}

@Override
public int size() {
return size;
}

@Override
public IIterator<T> iterator() {
return new MyIterator1<T>(this);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: