這節提供乙個便於使用的 myarraylist 泛型類的實現,這裡不檢測可能使得迭代器無效的結構上的修改,也不檢測非法的迭代器 remove 方法。
myarraylist 將保持基礎陣列,陣列的容量,以及儲存在myarraylist 中的當前項數。
myarraylist 將提供一種機制以改變基礎陣列的容量。通過獲得乙個新陣列,將老陣列拷貝到新陣列中來改變陣列的容量,允許虛擬機器**老陣列。
myarraylist 將提供 get 和 set 的實現。
myarraylist 將提供基本的例程,如 size 、isempty 和 clear,它們是典型的單行程式;還提供 remove,以及兩種不同版本的 add。如果陣列大小和容量相同,那麼這兩個 add 例程將增加容量。
myarraylist 將提供乙個實現 iterator 介面的類。這個類將儲存迭代序列中的下一項的下標,並提供 next、hasnext 和 remove 等方法的實現。myarraylist 的迭代器方法直接返回實現 iterator 介面的該類的新構造的例項。
public class myarraylistimplements iterable
public void clear()
private void doclear()
public int size()
public boolean isempty()
public void trimtosize()
public e get(int idx)
return theitems[idx];
}public e set(int idx, e newval)
e old = theitems[idx];
theitems[idx] = newval;
return old;
}public void ensurecapacity(int newcapacity)
e old = theitems;
theitems = (e) new object[newcapacity];
for (int i = 0; i < thesize; i++)
}public boolean add(e x)
public void add(int idx, e x)
for (int i = thesize; i > idx; i--)
theitems[idx] = x;
thesize++;
}public e remove(int idx)
thesize--;
return removeditem;
}public iteratoriterator()
private class arraylistiterator implements iterator
public e next()
return theitems[current++];
}public void remove()
}}
arraylistiterator 是 myarraylist 的內部類,可以直接訪問 myarraylist 的 private 例項 順序表 MyArrayList的實現
實現的myarraylist實為順序表結構,其中要實現iterable時必須在內部實現iterator,即為該錶的迭代器.1 public class myarraylistimplements iterable 6private class myiterator implements iterat...
C 學習筆記34 類的static成員
靜態成員 不是任意物件的組成部分,但由給定類的全體物件所共享的資料成員或函式成員。靜態成員是與類關聯的物件,而不是像普通的成員那樣與類的物件相關聯。靜態成員可以是資料成員,或成員函式。靜態成員遵循正常的共有 私有訪問規則。通過關鍵字static宣告靜態成員。靜態資料成員必須在類定義體的外部定義,且只...
Codeup 墓地 3 4 問題 D 日期類
編寫乙個日期類,要求按 x xx xx 的格式輸出日期,實現加一天的操作。輸入第一行表示測試用例的個數m,接下來m行每行有3個用空格隔開的整數,分別表示年月日。測試資料不會有閏年。輸出m行。按 x xx xx的格式輸出,表示輸入日期的後一天的日期。2 1999 10 20 2001 1 311999...