理解这个图基本就解决了
Iterable
这个东西就必须提到一下“Iterator”(迭代器,增强for循环)这个接口
-
Java设计者让Collection继承于Iterable而不是Iterator接口。首先要明确的是,Iterable的子类Collection,Collection的子类List,Set等,这些是数据结构或者说放数据的地方。Iterator是定义了迭代逻辑的对象,让迭代逻辑和数据结构分离开来,这样的好处是可以在一种数据结构上实现多种迭代逻辑。
-
更重要的一点是:每一次调用Iterable的Iterator()方法,都会返回一个从头开始的Iterator对象,各个Iterator对象之间不会相互干扰,这样保证了可以同时对一个数据结构进行多个遍历。这是因为每个循环都是用了独立的迭代器Iterator对象。
Collection
方法签名 | 说明 |
---|---|
boolean add(E e) | 将元素 e 放入集合中 |
void clear() | 删除集合中的所有元素 |
boolean isEmpty() | 判断集合是否没有任何元素,俗称空集合 |
boolean remove(Object e) | 如果元素 e 出现在集合中,删除其中一个 |
int size() | 返回集合中的元素个数 |
Object[] toArray() | 返回一个装有所有集合中元素的数组 |
列表 | 队列 | 集合 | 双端队列 |
---|---|---|---|
List | Queue | Set | Deque |
List
方法 | 介绍 |
---|---|
boolean add(E e) | 对应尾插操作 |
void add(int index,E element) | 将元素插入到给定位置 |
boolean remove(Object o) | 删除第一个遇到的和 o 相等的元素 |
E remove(int index) | 将【index】位置的元素从线性结构中取出并返回 |
boolean addAll(Collection c) | 将c 容器中的所有元素(按照一定的次序),尾插 |
void sort(Comparator c) | 以c 作为元素的比较器,衡量元素大小进行原地排序 |
E get(int index) | 返回index 位置的元素 |
E set(int index,E element) | 用element 替换 index 位置的元素,并返回 index 位置原来的元素 |
int indexOf(E e) | 从前往后,第一个和 e 相等的元素所在位置 |
int lastIndexOf(E e) | 从后往前,最后一个和 e 相等的元素所在的位置 |
List subList(int fromIndex,int toIndex) | 将原有线性结构的[fromIndex,toIndex)截取 |
Map
方法签名 | 说明 |
---|---|
V get(Object k) | 根据指定的 k 查找对应的 v |
V getOrDefault(Object k, V defaultValue) | 根据指定的 k 查找对应的 v,没有找到用默认值代替 |
V put(K key, V value) | 将指定的 k-v 放入 Map |
boolean containsKey(Object key) | 判断是否包含 key |
boolean containsValue(Object value) | 判断是否包含 value |
Set<Map.Entry<K, V>> entrySet() | 将所有键值对返回 |
boolean isEmpty() | 判断是否为空 |
int size() | 返回键值对的数量 |