鍏跺疄錛屽洜涓轟笉鍚岄泦鍚堝疄鐜扮被鍚庡彴宸ヤ綔鐨勬暟鎹粨鏋勬湁鎵涓嶅悓錛屾墍浠ユ病鏈夊姙娉曠敤涓涓被鏉ュ疄鐜?/span>Iterator鎺ュ彛錛屽彲浠ヤ嬌涔嬮傜敤浜庢墍鏈夐泦鍚堛傝繖鏍鳳紝瀹炵幇Iterator鎺ュ彛鐨勪換鍔″氨钀藉埌浜嗛泦鍚堝疄鐜扮被鑷繁韜笂銆?/span>
鐢變簬瀹炵幇浜咺terator鎺ュ彛鐨勭被浠呬笌鍏蜂綋鐨勯泦鍚堝疄鐜扮被鏈夊叧錛屾墍浠ヨ繖涓被琚璁℃垚浜?strong>縐佹湁宓屽綾?/strong>銆傝屽嚒鏄鏈夌殑綾繪垚鍛樻槸涓嶄細鍑虹幇鍦↗ava API甯姪鏂囨。涓殑錛屽洜姝ゆ垜浠湪甯姪鏂囨。涓湅涓嶅埌榪欎釜綾葷殑璇存槑銆?/span>
涓嬮潰浠ユ暟緇勫疄鐜扮殑綰挎ц〃涓轟緥錛屽仛涓涓畝鍗曠殑婕旂ず錛岀浉淇$湅榪囦簡榪欐浠g爜錛屽ぇ瀹跺氨浼氭竻妤氫簡銆?/span>
璇存槑錛氭垜浠繖閲屼富瑕佹槸璁茶ВIterator鎺ュ彛鐨勪嬌鐢紝鎵浠ュ湪榪欎釜渚嬪瓙涓彧鎻愪緵浜哸dd鍜実et涓や釜鏂規硶錛屼互鍑忓皯浠g爜錛屼究浜庡ぇ瀹墮槄璇匯?/span>
public class OurArrayList<E> implements Iterable {
private E[] datas;
privateintsize;
public OurArrayList() {
this(16);
}
public OurArrayList(int capacity) {
datas = (E[])new Object[capacity];
size = 0;
}
publicvoid add(int index, E obj) {
if (size >= datas.length) {
E[] newData = (E[])new Object[datas.length * 2];
System.arraycopy(datas, 0, newData, 0, datas.length);
datas = newData;
}
for (int i = size - 1; i >= index; i--)
datas[i + 1] = datas[i];
datas[index] = obj;
size++;
}
public E get(int index) {
if (index < size) {
return (E)datas[index];
} else
returnnull;
}
public Iterator iterator() {
returnnew ArrayListIterator();
}
privateclass ArrayListIterator implements Iterator {
privateintcount = 0;
publicboolean hasNext() {
returncount < size;
}
public E next() {
return get(count++);
}
}
}