比较常用的框架如下:
Collection
├List│├LinkedList
│├ArrayList
└Set
│├HashSet
│├TreeSet
└Queue
│└Deque
││├ArrayDeque
││├LinkedList
Map
├HashMap
├TreeMap
Conllection接口定义的方法
int size() //返回此 collection中的元素数。如果此 collection 包含的元素大于 Integer.MAX_VALUE,则返回 Integer.MAX_VALUE。
boolean isEmpty() //如果此 collection 不包含元素,则返回 true。
boolean contains(Object o) //如果此 collection 包含指定的元素或者o为null,则返回 true。
Iterator<E> iterator() //返回在此 collection 的元素上进行迭代的迭代器。关于元素返回的顺序没有任何保证。
Object[] toArray() //此方法也必须分配一个新的数组,调用者可以随意修改返回的数组。
<T> T[] toArray(T[] a) //和toArray()一样,只是可以把数组放入a中,但是a必须大于等于容器的长度
boolean add(E e) //。添加成功,则返回 true。(如果此 collection 不允许有重复元素,并且已经包含了指定的元素,则返回 false。)
boolean remove(Object o) //删除集合中指定的集合e
boolean containsAll(Collection<?> c) //如果此 collection 包含指定 collection 中的所有元素,则返回 true。
boolean addAll(Collection<? extends E> c) //将指定 collection 中的所有元素都添加到此 collection 中。
boolean removeAll(Collection<?> c) //移除此 collection 中那些也包含在指定 collection 中的所有元素。
boolean retainAll(Collection<?> c) //仅保留此 collection 中那些也包含在指定 collection 的元素(可选操作)。
void clear()移除此 collection 中的所有元素(可选操作)。
boolean equals(Object o)比较此 collection 与指定对象是否相等。
int hashCode()//默认为 Collection 接口没有为 Object.hashCode(),
1.Set集合方法和Collection一样
1.1 HashSet<E> 有很好的存取和查找性能
注意:重写hashSet和equals方法,hashSet决定对象的存取位置,equals比较两个对象是否相等
1.2 TreeSet<E> 由于另外继承了SortedSet<E>接口,与HashSet相比,TreeSet有新的方法
如果E不是内置的包装类,需要继承comparable接口实现 CompareTo(Object obj)public Comparator<? super E> comparator()
public E first()
public E last()
public E lower(E e) //返回此 set 中严格小于给定元素的最大元素;如果不存在这样的元素,则返回 null。
public E higher(E e) //返回此 set 中严格大于给定元素的最小元素;如果不存在这样的元素,则返回 null
public SortedSet<E> subSet(E fromElement,E toElement)
//返回此 set 的部分视图,其元素从 fromElement(包括)到 toElement(不包括)。
SortedSet<E> headSet(E toElement) //返回此 set 的部分视图,其元素严格小于 toElement
SortedSet<E> tailSet(E fromElement) //返回此 set 的部分视图,其元素大于等于 fromElement
2.List 继承Collection,又增加了一些与索引有关的新方法
public void add(String item,int index)
boolean addAll(int index, Collection<? extends E> c)
E get(int index)
int indexOf(Object o) //对象o在List集合上第一次出现的位置
int lastIndexOf(Object o) //对象o在List集合上最后一次出现的位置
E remove(int index)
E set(int index,E element)
List<E> subList(int fromIndex,int toIndex) //返回索引[frome,toIndex)元素的子集
2.1 ArrayList 相对于C++中的Vector功能
2.2 LinkedListr 见Deque中的LinkedList
3. Queue
新增的方法
boolean add(E e)//指定的元素插入此队列
boolean offer(E e)//指定的元素插入此队列
E remove() //获取并移除此队列的头
E poll() //获取并移除此队列的头,如果此队列为空,则返回 null
E element()//获取,但是不移除此队列的头。此方法与 peek 唯一的不同在于:此队列为空时将抛出一个异常
E peek() //获取但不移除此队列的头;如果此队列为空,则返回 null
3.1 Deque接口
void addFirst(E e)//将指定元素插入此双端队列的开头(如果可以直接这样做而不违反容量限制)。
void addLast(E e)//将指定元素插入此双端队列的末尾(如果可以直接这样做而不违反容量限制)。
boolean offerFirst(E e)//在不违反容量限制的情况下,将指定的元素插入此双端队列的开头。
boolean offerLast(E e)//在不违反容量限制的情况下,将指定的元素插入此双端队列的末尾。
E removeFirst()//获取并移除此双端队列第一个元素。与 pollFirst不同在:队列为空,抛出异常。
E removeLast()//获取并移除此双端队列的最后一个元素。与 pollLast不同在于:队列为空,将抛出异常。
E pollFirst()//获取并移除此双端队列的第一个元素;如果此双端队列为空,则返回 null。
E pollLast()//获取并移除此双端队列的最后一个元素;如果此双端队列为空,则返回 null。
E getFirst()//获取,但不移除此双端队列的第一个元素。 与 peekFirst不同在于:队列为空,抛出异常。
E getLast()//获取,但不移除此双端队列的最后一个元素。与 peekLast不同在于:队列为空,抛出异常。
E peekFirst()//获取,但不移除此双端队列的第一个元素;如果此双端队列为空,则返回 null。
E peekLast()//获取,但不移除此双端队列的最后一个元素;如果此双端队列为空,则返回 null。
boolean removeFirstOccurrence(Object o)
//从此双端队列移除第一次出现的指定元素。如果此双端队列不包含该元素,则不作更改。
boolean removeLastOccurrence(Object o)
//从此双端队列移除最后一次出现的指定元素。如果此双端队列不包含该元素,则不作更改。
boolean offer(E e)//将指定元素插入此双端队列所表示的队列(换句话说,此双端队列的尾部),如果可以直接这样做而不违反容量限制的话;如果成功,则返回 true,如果当前没有可用的空间,则返回 false。当使用有容量限制的双端队列时,此方法通常优于 add(E) 方法,后者可能无法插入元素,而只是抛出一个异常。
void push(E e)//将一个元素推入此双端队列所表示的堆栈
E pop()//从此双端队列所表示的堆栈中弹出一个元素。
boolean contains(Object o)//如果此双端队列包含指定元素,则返回 true。
int size()//返回此双端队列的元素数。
Iterator<E> iterator()//返回以恰当顺序在此双端队列的元素上进行迭代的迭代器。
Iterator<E> descendingIterator()//返回以逆向顺序在此双端队列的元素上进行迭代的迭代器。
3.1.1 ArrayDeque(一般当做栈和队列用)
作为双端队列
boolean offerFirst(E e)//在不违反容量限制的情况下,将指定的元素插入此双端队列的开头。
boolean offerLast(E e)//在不违反容量限制的情况下,将指定的元素插入此双端队列的末尾。
E pollFirst()//获取并移除此双端队列的第一个元素;如果此双端队列为空,则返回 null。
E pollLast()//获取并移除此双端队列的最后一个元素;如果此双端队列为空,则返回 null。
E peekFirst()//获取,但不移除此双端队列的第一个元素;如果此双端队列为空,则返回 null。
E peekLast()//获取,但不移除此双端队列的最后一个元素;如果此双端队列为空,则返回 null。
int size()
boolean isEmpty()
作为栈
E peek()
E pop()
void push(E e)
int size()
boolean isEmpty()
3.1.1 LinkedList (随机访问效率不高,迭代、插入、删除效率比较高)
Map<K,V>
int size()//此映射中的键-值映射关系数
boolean isEmpty()//如果此映射未包含键-值映射关系,则返回 true。
boolean containsKey(Object key)//如果此映射包含指定键的映射关系,则返回 true。
boolean containsValue(Object value)//如果此映射将一个或多个键映射到指定值,则返回 true。
V get(Object key)//返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。
V put(K key,V value)//将指定的值与此映射中的指定键关联。
V remove(Object key)//如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。
void putAll(Map<? extends K,? extends V> m)从指定映射中将所有映射关系复制到此映射中。
void clear()从此映射中移除所有映射关系(可选操作)。此调用返回后,该映射将为空。
Set<K> keySet()//返回此映射中包含的键的 Set 视图。
Collection<V> values()//返回此映射中包含的值的 Collection 视图。
Set<Map.Entry<K,V>> entrySet()//返回此映射中包含的映射关系的 Set 视图。
boolean equals(Object o)//比较指定的对象与此映射是否相等
int hashCode()//返回此映射的哈希码值。
1. HashMap<K,V> (用于快速存储键值对)
2. TreeMap<K,V>(需要对键值进行排序)
TreeMap和TreeSet一样,如果E不是内置的包装类,需要继承comparable接口实现 CompareTo(Object obj)public K firstKey() //返回此映射中当前第一个(最低)键
public K lastKey() //返回映射中当前最后一个(最高)键
public Map.Entry<K,V> firstEntry()
//返回一个与此映射中的最小键关联的键-值映射关系;如果映射为空,则返回 null
public Map.Entry<K,V> lastEntry()
//返回与此映射中的最大键关联的键-值映射关系;如果映射为空,则返回 null。
public Map.Entry<K,V> pollFirstEntry()
//移除并返回与此映射中的最小键关联的键-值映射关系;如果映射为空,则返回 null。
public Map.Entry<K,V> pollLastEntry()
//移除并返回与此映射中的最大键关联的键-值映射关系;如果映射为空,则返回 null
public Map.Entry<K,V> lowerEntry(K key)
//返回一个键-值映射关系,它与严格小于给定键的最大键关联;如果不存在这样的键,则返回 null
public K lowerKey(K key) //返回严格小于给定键的最大键;如果不存在这样的键,则返回 null
public Map.Entry<K,V> floorEntry(K key)
//返回一个键-值映射关系,它与小于等于给定键的最大键关联;如果不存在这样的键,则返回 null
public K floorKey(K key) //返回小于等于给定键的最大键;如果不存在这样的键,则返回 null
public Map.Entry<K,V> ceilingEntry(K key)
//返回一个键-值映射关系,它与大于等于给定键的最小键关联;如果不存在这样的键,则返回 null
public K ceilingKey(K key)
//返回大于等于给定键的最小键;如果不存在这样的键,则返回 null。
public Map.Entry<K,V> higherEntry(K key)
//返回一个键-值映射关系,它与严格大于给定键的最小键关联;如果不存在这样的键,则返回 null
public K higherKey(K key) //返回严格大于给定键的最小键;如果不存在这样的键,则返回 null
public NavigableMap<K,V> subMap(K fromKey,boolean fromInclusive,K toKey,boolean toInclusive)
//返回此映射的部分视图,其键的范围从 fromKey 到 toKey
public SortedMap<K,V> subMap(K fromKey,K toKey)
//返回此映射的部分视图,其键值的范围从 fromKey(包括)到 toKey(不包括)。
public NavigableMap<K,V> headMap(K toKey,boolean inclusive)
//返回此映射的部分视图,其键小于(或等于,如果 inclusive 为 true)toKey
public NavigableMap<K,V> tailMap(K fromKey,boolean inclusive)
//返回此映射的部分视图,其键大于(或等于,如果 inclusive 为 true)fromKey
public SortedMap<K,V> headMap(K toKey) //返回此映射的部分视图,其键值严格小于 toKey
public SortedMap<K,V> tailMap(K fromKey) //回此映射的部分视图,其键大于等于 fromKey