我的自学记录:Java集合之案例--迭代模式

package com.iotek.myiterator;
public interface Iterator<T> {
 public boolean hasNext();//判断是否有下一个元素
 public T next();//获取下一个元素
}


package com.iotek.myiterator;
public interface List<T> {
 public void add(T obj);//给容器添加元素
 public T get(int index);//获取指定位置元素
 public int size();//获取容器中的元素个数
 public Iterator<T> iterator();//得到具体的迭代器对象
 
}

package com.iotek.myiterator;
public class MyIterator<T> implements Iterator<T> {
 private List<T> list=null;
 private int index=0;//访问到容器中元素的当前下标
 //创建一个迭代器对象时候接受被迭代的容器对象
 public MyIterator(List<T> list){
  this.list=list;
 }
 @Override
 public boolean hasNext() {
 
  return index<list.size();
 }
 @Override
 public T next() {
 
  return list.get(index++);
 }
}

package com.iotek.myiterator;
public class ArrayList<T> implements List<T> {
 private Object [] obj=null;
 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)obj[index];
 }
 @Override
 public int size() {
 
  return size;
 }
 @Override
 public Iterator<T> iterator() {
  return new MyIterator<T>(this);
 } 
}

package com.iotek.myiterator;
public class Test {
 public static void main(String[] args) {
  ArrayList<String> nameList = new ArrayList<String>();
  nameList.add("zhang shan");
  nameList.add("lisi");
  nameList.add("wang wu");
  Iterator<String> it=nameList.iterator();
  while(it.hasNext())
   System.out.println(it.next());
 }

猜你喜欢

转载自blog.csdn.net/zc5000/article/details/80170072