用了java集合這麼久,還沒有系統的研究過java的集合結構,今天親自畫了下類圖,總算有所收穫。
一、所有集合都實作了Iterable介面。
Iterable介面中包含一個抽象方法:Iterator
Iterator:它包含三個方法,hashNext(),next(),remove()三種方法,通過它們可以實現集合的遍歷和元素刪除,例如:
Collection
list.add("a");
list.add("b");
list.add("c");;
while (iterator .hasNext()) {System.out.println(element);/ System.out.println(list);//[a, b, c] iterator = list.iterator(); iterator.next();
iterator.remove();
直接實作Iterator介面呢?因為:Iterator會攜帶目前集合的位置訊息,下次使用再使用的時候就非從0開始了;而Iterable介面每次都傳回一個Iterator物件(透過內部類別實作Iterator),各個迭代器之間互不影響。 二、ListIterator 從AbstractList起封裝了public ListIteratorlistIterator()方法,返回一個ListIterator,它在Iterator
listIterator()方法,返回一個ListIterator,它在Iterators(Paddious))可以實現雙向遍歷。();
list.add("a");
list.add("b");
list.add("c"); = list.listIterator(3);
while (iterator.hasPrevious()) {
三、比較
ArrayList:允許存放重複元素,且元素是有順序的,隨機存取較為方便。
LinkedList:鍊錶實現,插入與刪除時較優於ArrayList。