转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/13560125.html
一:宏观架构
拆解记忆如下:
1、接口: Collection接口是集合顶层接口,定义了集合类中最基本的一系列操作方法;
Collection接口有两个主要的分支子接口,List 和 Set。
List接口在Collection接口的基础上,新增了一系列特有的数组操作相关方法;
Set接口与Collection接口一致,没有新增特有的操作方法;
2、抽象类:AbstractCollection抽象类实现了Collection接口中的大部分方法;
AbstractList抽象类继承了AbstractCollection并实现了List接口,基于AbstractCollection已实现的大部分集合方法的基础上,又实现了List接口中大部分新增的方法;
AbstractSet抽象类继承了AbstractCollection并实现了Set接口,针对Set集合的特有属性,对AbstractCollection中的某些实现方法进行了重写;
3、迭代接口:Collection中的iterator()方法会返回一个Iterator接口,定义了对通用集合类进行遍历的一系列方法;
ListIterator继承了Iterator接口,在List接口的ListIterator()方法返回一个ListIterator,额外增加了针对List进行遍历的一系列方法。
二:Collection接口
它是集合类的最顶层接口,对集合操作进行了高度抽象,定义了集合的基本操作:添加、删除、清空、遍历、包含判断、判断是否为空、获取大小等。
// Collection的API abstract boolean add(E object) abstract boolean addAll(Collection<? extends E> collection)
abstract void clear()
abstract boolean contains(Object object) abstract boolean containsAll(Collection<?> collection)
abstract boolean equals(Object object) abstract int hashCode()
abstract boolean isEmpty()
abstract Iterator<E> iterator()
abstract boolean remove(Object object) abstract boolean removeAll(Collection<?> collection) abstract boolean retainAll(Collection<?> collection)
abstract int size()
abstract <T> T[] toArray(T[] array) abstract Object[] toArray()
三:List接口
继承于Collection接口,包含了Collection中的全部方法接口;同时,它定义了自己额外的API。主要有“添加、删除、获取、修改指定位置的元素”、“获取List中的子队列”等。
// Collection的API abstract boolean add(E object) abstract boolean addAll(Collection<? extends E> collection) abstract void clear() abstract boolean contains(Object object) abstract boolean containsAll(Collection<?> collection) abstract boolean equals(Object object) abstract int hashCode() abstract boolean isEmpty() abstract Iterator<E> iterator() abstract boolean remove(Object object) abstract boolean removeAll(Collection<?> collection) abstract boolean retainAll(Collection<?> collection) abstract int size() abstract <T> T[] toArray(T[] array) abstract Object[] toArray() // 相比与Collection,List新增的API: abstract void add(int location, E object) abstract boolean addAll(int location, Collection<? extends E> collection)
abstract E get(int location) abstract int indexOf(Object object) abstract int lastIndexOf(Object object)
abstract ListIterator<E> listIterator(int location) abstract ListIterator<E> listIterator()
abstract E remove(int location) abstract E set(int location, E object) abstract List<E> subList(int start, int end)
四:Set接口
继承于Collection的接口,API和Collection完全一样,没有新增额外的接口。
// Set的API abstract boolean add(E object) abstract boolean addAll(Collection<? extends E> collection) abstract void clear() abstract boolean contains(Object object) abstract boolean containsAll(Collection<?> collection) abstract boolean equals(Object object) abstract int hashCode() abstract boolean isEmpty() abstract Iterator<E> iterator() abstract boolean remove(Object object) abstract boolean removeAll(Collection<?> collection) abstract boolean retainAll(Collection<?> collection) abstract int size() abstract <T> T[] toArray(T[] array) abstract Object[] toArray()
五:AbstractCollection抽象类
它实现了Collection接口中,除iterator()和size()之外的所有集合操作方法。
六:AbstractList抽象类
继承于AbstractCollection,并且实现List接口。
它实现了List接口中的大部分函数,同时,在AbstractCollection的基础上实现了iterator()方法。
七:AbstractSet抽象类
它实现了Set接口中的大部分函数,对于某些Set操作特有的,在AbstractCollection的基础上进行了重写。
八:Iterator接口
它是集合的迭代器,提供了集合遍历的三个方法,包括:是否存在下一个元素、获取下一个元素、删除当前元素。
// Iterator的API abstract boolean hasNext() abstract E next() abstract void remove()
九:ListIterator接口
继承于Iterator的接口,它是List特有的迭代器,在Iterator的三个方法基础上,新增了 添加、是否存在上一个元素、获取上一个元素等API。
// 继承于Iterator的接口 abstract boolean hasNext() abstract E next() abstract void remove() // ListIterator新增的API接口 abstract void add(E object) abstract boolean hasPrevious() abstract int nextIndex() abstract E previous() abstract int previousIndex() abstract void set(E object)