@File
2020-04-09T04:54:19.000000Z
字数 886
阅读 107
java
import java.util.AbstractCollection; // 集合父类
import java.util.Iterator; // 迭代器接口
/**
* 自定义一个集合
*/
public class TestForEach<T> extends AbstractCollection<T> {
private int size; // 集合大小
private Object[] value; // 集合容器
// 随便赋个值
public TestForEach(Object[] value) {
this.size = value.length;
this.value = value;
}
/**
* 重写迭代器
* @return 迭代器
*/
@Override
public Iterator<T> iterator() {
return new Ite<>();
}
/**
* 大小的获取方法
*/
@Override
public int size() {
return size;
}
/**
* 迭代器
*/
private class Ite<E> implements Iterator<E>{
private int cursor; // 当前位置,也可以理解为指针
/**
* 重写判断下一个元素是否存在方法
*/
@Override
public boolean hasNext() {
return cursor != size;
}
/**
* 重写获取下一个元素值的逻辑
*/
@Override
public E next() {
if(cursor < size){
return (E)value[cursor++];
}
return null;
}
}
}
AbstractCollection 集合的父类
1) 只读集合:
iterator()
和 size()
2) 可改集合:
add()
方法Iterator 迭代器接口
1) 只读迭代器:
hasNext
和 next
2) 可改迭代器:
remove()
方法