JDK 11 阅读 - Collection
Overview
Collection 是根接口
基础接口✅
Comparable接口✅
- 只有一个compareTo接口方法
Iterator接口✅
- 有hasNext和next方法
- 还有一个default的remove方法,但没有实现,只是抛出异常
1. Set 接口
无序、不能重复
主接口 ✅
方法如下: size / isEmpty / contains / iterator / toArray / add / remove / containsAll / addAll retainAll (保留这部分,其他del)/ removeAll(Collection) / clear / equals / hashCode spliterator (default 此处返回Spliterators.spliterator)/ of(返回无法修改的set)
子接口✅
EventSet❌
JAVA Debug Interface ,忽略
SortedSet✅
- 扩展自Set
- 声明按升序排序的集合🌟
- 方法:comparator / subSet / headSet / tailSet / first / last / spliterator
NavigableSet✅
- 扩展自SortedSet
- TreeSet实现了NavigableSet,间接实现了SortedSet
- 提供了lower/floor/ceiling/pollFirst/pollLast/Higher/Lower/DescendingIterator 等导航以及返回满足条件的元素功能。
实现类
AbstractSet
ConcurrentHashMap.KeySetView
ConcurrentSkipListSet
CopyOnWriteArraySet
EnumSet🚧
HashSet✅
-
扩展自AbstractSet
-
实现了set,Cloneable,Serializable接口
-
里面自带Hashmap实例,大部分操作是通过hashmap实现的
-
add等涉及的元素扩张没有涉及,都在hashmap对象里
-
HashSet从一个Collection 初始化HashMap,Loadfactor 0.75,初始化大小为Math.max((int) (c.size()/.75f) + 1, 16)
-
初始化时可以指定initialCapacity以及初始化时,Loadfactor
JobStateReasons
LinkedHashSet
TreeSet
2. List 接口
有序、可重复