文章分为两个部分,第一部分为描述集合间的继承和实现关系,第二部分集合接口或者类的公共方法。
1 集合间的继承和实现关系(悲剧,不会画图,只能用文字描述):
---> 继承关系 ---- 实现关系
基础接口和类
Iterable(接口) --->ollection(接口) --->set(接口) List(接口) Queue(接口)
Iterator(接口) --> ListIterator(接口)
Comparator Comparable(当集合需要排序要么传入比较器 要么重写泛型参数T的Comparable方法)
Object ---> AbstractCollection --->AbstractList
List(接口) ---AbstractList
AbstractList RandomAccess(接口) ---> ArrayList
AbstractList RandomAccess(接口) ---> Vecror
Vector ---> Stack
Queue(接口) --->Dquue(接口)
AbstractList ---> AbstractSequentialList
Dquue(接口) AbstractSequentialList ---> LinkedList
Set(接口) ----AbstractSet
AbstractSet ---> HashSet EnumSet
Set(接口) ---> SortedSet(接口) ---> NavigableSet(接口)
NavigableSet AbstractSet --->TreeSet
Object Map(接口) ---AbstractMap
AbstractMap ---> HashMap --->LinkedHashMap
Map(接口) ---> SortedMap(接口) ---> NavigableMap(接口)
AbstractMap NavigableMap(接口) ---> TreeMap
Object -->Collections (有很多可以生成集合的静态方法)
2 集合的通用方法
2.1 遍历
2.1.1 通过Iterator<E>进行遍历(集合通用)
2.1.2 针对实现List接口的类可以使用ListIterator进行遍历(同样通过索引方式进行遍历 )
2.1.3 针对Map 有可能通过 keySet values 或者 entrySet进行遍历
2.1.4 还有其他方式,比如讲List转化为数组(toArray)。当然,这是非常规方式
2.2 修改(删除 新增 更新)
2.2.1 删除
2.2.1.1 通过迭代器的remove方法(通用)
2.2.1.2 通过remove clear (clear removeAll作用类似,就ArrayList而言 两者只是性能的差异)
2.2.1.3 通过 removeAll retainAll(List Set)
2.2.2 增加
2.2.2.1 List Set通过add addAll方法 Map通过put增加元素
2.2.3 更新
2.2.3.1 通过ListIterator的set方法(针对实现List接口的类或者实现List接口的接口)
2.2.3.2 针对List通过set方法改变(LinkedList 通过索引可能涉及较慢) Map直接通过put覆盖原来的键所对应的值 Set为无序集合 无法更新对应的值
2.3 其它注意事项
2.3.1 其他方法如isEmpty() size()
2.3.2 toArray()只能将集合转化为Object[]数组, 如果想转化T[] 请使用 toArray(new T[0])类似的用法