首先,下面是Collection、Map和、Set接口的相关架构图
- Collection接口
- Map接口
图片来源:http://www.cnblogs.com/skywan...
一、Collection相关接口和类
和Collection相关的接口主要有Collection、List和Set接口,其他接口会在介绍三个接口中穿插讲解。
1、Collection接口
- Collection是一个抽象出来的接口,定义如下:
public interface Collection extends Iterable {}
其中包括了集合的基本操作,包括:删除、添加、遍历、大小等。
Collection中定义方法如下:
int size();
boolean isEmpty();
boolean contains(Object o);
Iterator iterator();
Object[] toArray();
T[] toArray(T[] a);
boolean add(E e);
boolean remove(Object o);
boolean containsAll(Collection c);
boolean addAll(Collection c);
boolean removeAll(Collection c);
boolean retainAll(Collection c);
void clear();
boolean equals(Object o);
int hashCode();
//1.8新增
default boolean removeIf(Predicate filter){}
default Spliterator spliterator(){}
default Stream stream(){}
default Stream parallelStream() {}
- AbstractCollection抽象类继承自Collection,实现了除iterator()和size()的所有方法。定义如下:
public abstract class AbstractCollection implements Collection {}
2、List接口
- List接口继承自Collection,List中的元素的允许重复的。定义如下:
public interface List extends Collection {}
和Collection不重合、List特有的方法如下:
boolean addAll(int index, Collection c);
default void replaceAll(UnaryOperator operator) {}
default void sort(Comparator c) {}
E get(int index);
E set(int index, E element);
void add(int index, E element);
E remove(int index);
int indexOf(Object o);
int lastIndexOf(Object o);
ListIterator listIterator();
ListIterator listIterator(int index);
List subList(int fromIndex, int toIndex);
- AbstractList抽象类继承了AbstractCollection,并且实现了List接口,定义如下:
public abstract class AbstractList extends AbstractCollection implements List {}
3、Set接口
- Set接口继承自Collection,Set是数学中定义的集合,元素不允许重复。定义如下:
public interface Set extends Collection {}
Set接口和Collection中方法一致,具体见Collection接口方法。
- AbstractSet抽象类继承了AbstractCollection,并且实现了Set接口,定义如下:
public abstract class AbstractSet extends AbstractCollection implements Set {}
二、Map相关接口和类
Map是一种键值对的映射,没有继承Collection接口,具体定义如下:
public interface Map {}
1、Map接口
Map接口中定义了添加、删除、遍历等相关方法,具体方法如下:
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 m);
void clear();
Set keySet();
Collection values();
Set> entrySet();
interface Entry {}
boolean equals(Object o);
int hashCode();
//1.8新增
default V getOrDefault(Object key, V defaultValue) {}
default void forEach(BiConsumer action) {}
default void replaceAll(BiFunction function) {}
default V putIfAbsent(K key, V value) {}
default boolean remove(Object key, Object value) {}
default boolean replace(K key, V oldValue, V newValue) {}
default V replace(K key, V value) {}
default V computeIfAbsent(K key,
Function mappingFunction) {}
default V computeIfPresent(K key,
BiFunction remappingFunction) {}
default V compute(K key,
BiFunction remappingFunction) {}
default V merge(K key, V value,
BiFunction remappingFunction){}
2、AbstractMap类
AbstractMap抽象类实现了Map接口,实现Map中定义的方法,定义如下:
public abstract class AbstractMap implements Map {}
3、SortedMap和NavigableMap接口
SortedMap表示一个有序的键值映射,排序的方式有两种:自然排序和指定比较强排序。插入有序的SortedMap的所有元素都必须实现Comparable接口,具体方法如下:
Comparator comparator();
SortedMap subMap(K fromKey, K toKey);
SortedMap headMap(K toKey);
SortedMap tailMap(K fromKey);
K firstKey();
K lastKey();
Set keySet();
Collection values();
Set> entrySet();
NavigableMap是SortedMap接口的扩展,有针对给定搜索目标返回最接近匹配项的导航方法。具体方法如下:
Map.Entry lowerEntry(K key);
K lowerKey(K key);
Map.Entry floorEntry(K key);
K floorKey(K key);
Map.Entry ceilingEntry(K key);
K ceilingKey(K key);
Map.Entry higherEntry(K key);
K higherKey(K key);
Map.Entry firstEntry();
Map.Entry lastEntry();
Map.Entry pollFirstEntry();
Map.Entry pollLastEntry();
NavigableMap descendingMap();
NavigableSet navigableKeySet();
NavigableSet descendingKeySet();
NavigableMap subMap(K fromKey, boolean fromInclusive,
K toKey, boolean toInclusive);
NavigableMap headMap(K toKey, boolean inclusive);
NavigableMap tailMap(K fromKey, boolean inclusive);
SortedMap subMap(K fromKey, K toKey);
SortedMap headMap(K toKey);
SortedMap tailMap(K fromKey);
Iterator相关接口
Iterator的工作是遍历并选择序列中的对象,它提供了一种访问一个容器(container)对象中的各个元素,而又不必暴露该对象内部细节的方法。通过迭代器,开发人员不需要了解容器底层的结构,就可以实现对容器的遍历。由于创建迭代器的代价小,因此迭代器通常被称为轻量级的容器。
1、Iterator接口
Iterator接口的定义如下:
public interface Iterator {}
Iterator中定义的方法如下:
boolean hasNext();
E next();
//1.8新增
default void remove() {}
default void forEachRemaining(Consumer action) {}
2、ListIterator接口
支持在迭代期间向List中添加或删除元素,并且可以在List中双向滚动。定义如下:
public interface ListIterator extends Iterator {}
ListIterator中定义的方法如下:
boolean hasNext();
E next();
boolean hasPrevious();
E previous();
int nextIndex();
int previousIndex();
void remove();
void set(E e);
void add(E e);
本节主要总结了集合相关的顶层接口,下一节将分析每一类集合实现类。