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声明,而且可自动肯定引用的主体为其外部类。

相关文章
相关标签/搜索