自定义迭代器接口
package sky.java.innerclass;
/**
* 迭代器
*/
public interface Selector {
boolean end();
void next();
Object current();
}
自定义容器 , 与容器内迭代器实现
package sky.java.innerclass;
/**
* 自定义集合
*/
public class MyList {
private int[] is;
private int index = 0;
public MyList(int size) {
is = new int[size];
}
public void add(int val) {
if (index < is.length) {
is[index++] = val;
}
}
/**
* 内部类
* 优势:
* 1. 对外隐藏内部实现
* 2. 能够操控外部类的成员变量与方法
*/
private class MyInterptor implements Selector {
private int curIndex = 0;
@Override
public boolean end() {
return curIndex >= is.length;
}
@Override
public void next() {
if (curIndex < is.length) {
curIndex++;
}
}
@Override
public Object current() {
return is[curIndex];
}
}
public MyInterptor myInterptor = new MyInterptor();
public static void main(String[] args) {
MyList myList = new MyList(10);
for (int i = 0; i < 10; i++) {
myList.add(i);
}
while(!myList.myInterptor.end()) {
System.out.println("haha : " + myList.myInterptor.current());
myList.myInterptor.next();
}
}
}
学习体会 :
1. List集合底层是由数组实现的.
2. 内部类可以操作外部类的成员属性与方法
3. 内部类可以对外隐藏具体实现