Java容器类型使用总结
作者:网络转载 发布时间:[ 2015/2/27 16:59:01 ] 推荐标签:Java 容器 软件开发
近抽空把java.lang下面常用的那些容器类型(数据结构)复习了一下,这些东西是基础,平时使用的时候也可以很容易查得到,有些方法大概知道,但是总是弄混,如果可以记住那些重要方法,并且能够熟练使用的话,还是可以让编码过程变得容易很多。另外一个是实现机制,对于常用数据结构的实现机制,应该说是必须要熟知的。
另外,并发容器我之前整理过,放在这篇文章里。
Queue
add和offer的区别在于达到上add抛出异常,offer返回false;
remove和poll的区别在于,队列为空时前者抛出异常,后者返回空;
element和peek都返回队列头部元素,但是前者失败不抛出异常,后者返回空。
boolean add(E e);
boolean offer(E e);
E remove();
E poll();
E element();
E peek();
PriorityQueue,内部实现是一个Object[]queue承载的堆。
Deque,双端队列(double-ended queue),在Queue基础上,增加了这样几个方法:
void addFirst(E e);
void addLast(E e);
boolean offerFirst(E e);
boolean offerLast(E e);
E removeFirst();
E removeLast();
E pollFirst();
E pollLast();
E getFirst();
E getLast();
E peekFirst();
E peekLast();
boolean removeFirstOccurrence(Object o);
boolean removeLastOccurrence(Object o);
ArrayDequeue:数组实现,扩容策略是容量翻倍。
List
boolean add(E e);
boolean remove(Object o);
E get(int index);
E set(int index,E element);
void add(int index,E element);
E remove(int index);
ArrayList,扩容策略是(oldCapacity*3)/2+1。
LinkedList,它除了实现自List接口外,还实现了Deque接口。
Vector,实现自List接口,内部实现是个数组,线程安全,扩容策略是(capacityIncrement>0)?(oldCapacity+capacityIncrement):(oldCapacity*2)。
Stack是Vector的子类,增加了一些栈的方法:
E push(E item)
E pop()
E peek()
boolean empty()
Map
boolean containsKey(Object key);
boolean containsValue(Object value);
V get(Object key);
V put(K key,V value);
V remove(Object key);
Set<K>keySet();
Collection<V>values();
Set<Map.Entry<K,V>>entrySet();
SotedMap接口,key是有序的map:
SortedMap<K,V>subMap(K paramK1,K paramK2);
SortedMap<K,V>headMap(K paramK);
SortedMap<K,V>tailMap(K paramK);
K firstKey();
K lastKey();

sales@spasvo.com