基本概念
首先来看一张类集框架图:
这里我们来分析几个接口,几乎所有的类都实现了它们。
Colleciton,称为集合,是单值存放的最大父接口,它的子接口有 List,Set。
List,称为列表,可以存放重复的内容。它的主要实现类有: ArrayList,LinkedList,Vector,Stack。
Set,称为集,不能存放重复的内容,它的主要实现类有:HashSet,LinkedHashSet,SortedSet,TreeSet。
Map,称为映射,它操作的一对对象,它的每个元素都以 key-value 的形式保存在集合中。它的主要实现类有:HashTable,HashMap,LinkedHashMap,SortedMap,TreeMap,WeakHashMap。
源码分析
1.Colleciton
在分析它的源码之前,先来看它继承的父类
public interface Iterable<T> {
//返回一个在一组 T 类型的元素上进行迭代的迭代器
Iterator<T> iterator();
}
下面来看这个迭代器,即 Iterator
public interface Iterator<E> {
boolean hasNext();
E next();
void remove();
}
Collection 接口的源码
public interface Collection<E> extends Iterable<E> {
Iterator<E> iterator(); //返回一个迭代器
int size();
boolean isEmpty();
Object[] toArray();
<T> T[] toArray(T[] a);
boolean contains(Object o);
boolean containsAll(Collection<?> c);
boolean add(E e);
boolean addAll(Collection<? extends E> c);
boolean remove(Object o);
boolean removeAll(Collection<?> c);
boolean retainAll(Collection<?> c);
void clear();
boolean equals(Object o);
int hashCode();
}
2.List
List ,也称列表,继承了 Collection 接口并定义了新的方法。
public interface List<E> extends Collection<E> {
Iterator<E> iterator();
int size();
boolean isEmpty();
boolean contains(Object o);
boolean containsAll(Collection<?> c);
Object[] toArray();
<T> T[] toArray(T[] a);
boolean add(E e);
boolean addAll(Collection<? extends E> c);
boolean remove(Object o);
boolean removeAll(Collection<?> c);
boolean retainAll(Collection<?> c);
void clear();
boolean equals(Object o);
int hashCode();
//新增方法如下
E get(int index);
E set(int index, E element);
void add(int index, E element);
boolean addAll(int index, Collection<? extends E> c);
E remove(int index);
int indexOf(Object o);
int lastIndexOf(Object o);
ListIterator<E> listIterator();
ListIterator<E> listIterator(int index);
List<E> subList(int fromIndex, int toIndex);
}
3.Set
Set,也称集,原封不动的继承了 Collection 接口的方法
public interface Set<E> extends Collection<E> {
Iterator<E> iterator();
int size();
boolean isEmpty();
Object[] toArray();
<T> T[] toArray(T[] a);
boolean contains(Object o);
boolean containsAll(Collection<?> c);
boolean add(E e);
boolean addAll(Collection<? extends E> c);
boolean remove(Object o);
boolean removeAll(Collection<?> c);
boolean retainAll(Collection<?> c);
void clear();
boolean equals(Object o);
int hashCode();
}
4.Map
Map,也称映射。与上面几个集合接口步同,它并没有继承 Colleciton 接口。
public interface Map<K, V> {
int size();
boolean isEmpty();
boolean containsKey(Object key);
boolean containsValue(Object value);
V get(Object key);
V put(K key, V value);
V remove(Object key);
void putAll(Map<? extends K, ? extends V> m);
void clear();
Set<K> keySet();
Collection<V> values();
Set<Map.Entry<K, V>> entrySet();
interface Entry<K, V> {
K getKey();
V getValue();
V setValue(V value);
boolean equals(Object o);
int hashCode();
}
boolean equals(Object o);
int hashCode();
}