java數據結構之列表——ArrayList,LinkedList,比較

剛看完《數據結構與算法分析java語言描述》的第3章中的表,下面回憶下主要知識點,主要說明各列表之間的關係,以及各自的優缺點。其中牽涉到內部類和嵌套類。java

1 Collection API
public interface Collection<AnyType> extens Iterable<AnyType>算法

{數組

int size();數據結構

boolean isEmpty();spa

void clear();索引

boolean contains(AnyType x);rem

boolean add(AnyType x);get

boolean remove(AnyType x);it

java.util.Iterator<AnyType> iteratoe();io

}

2 Iterator API

public interface Iterator<AnyType>

{

boolean hasNext();

AnyType next();

void move();

}

3 List

 

public interface List<AnyType> extents Collection<AnyType>

{

AnyType get(int idx);

AnyType set (int idx,AnyType newVal);

void add(int idx,AnyType x);

void remove(int idx);

 

ListIterator<AnyType> listIterator(int pos);

}

 

4 ListIterator

public interface ListIterator<AnyType> extents Iterator<AnyType>

{

boolean hasPrevious();

AnyType previous();

 

void add(AnyType x);

void set(AnyType newVal);

}

 

5 ArrayList是List的一種可增加的數組實現,優勢是get和set花費常數時間,而insert和remove代價昂貴。除非是在末端進行。

6 LinkedList是List的雙鏈表實現,優勢是insert和remove開銷較小,而get和set花費較大。不容易操做索引。

7 iterator的remove方法比LinkedList效率更高,由於迭代器位於須要被刪除的節點附近。可是使用iterato時,list的結構不能被改變(例如insert,remove等)。

8 嵌套內經常用static放在類內部,其沒法肯定引用的主體;而內部類無需static聲明,而且可自動肯定引用的主體爲其外部類。

相關文章
相關標籤/搜索