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




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;// 访问到容器中元素的当前下标
// 创建一个迭代器对象的时候接收要被迭代的具体的容器对象


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);
}


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值