参考:《疯狂JAVA讲义》
Map接口(字典/关联数组) | Collection接口 | ||||
Object put(Object key, Object value) Object remove(Object key) int size() boolean isEmpty() boolean containsKey(Object key) boolean containsValue(Object value) void putAll(Map t) void clear() Set keySet() //keys Set entrySet() //Map.Entrys Collection values() //values |
boolean add(Object o) boolean remove(Object o) int size() boolean isEmpty() boolean contains(Object o) Iterator iterator() Collection不提供get()方法。如果要遍历Collectin中的元素,就必须用Iterator。 boolean containsAll(Collection c) boolean addAll(Collection c) void clear() void removeAll(Collection c) void retainAll(Collection c) Object[] toArray() Object[] toArray(Object[] a) |
||||
Map接口 (key-value对) (key为Set) (遍历:先获取key集合,再通过key遍历获取value) |
Set接口 (无序,不重复,方法函数与Collection一样): |
Queue接口 (先进先出): void add(Object) Object poll() Object peek() |
List接口 (有序,可重复,添加了面向位置的操作): int indexOf(Object o) int lastIndexOf(Object o) Object set(int index, Object element) void add(int index, Object element) boolean addAll(int index, Collection c) Object remove(int index) ListItertor: 对Iterator增加支持添加或更改底层集合中的元素、支持双向访问 void add(Object o) void set(Object o) boolean hasPrevious() Object previous() int previousIndex() int nextIndex() |
||
HashMap (线程不安全) (key只允许有一个为null,value可有多个为null) (比较value相等:equals方法返回true ;比较key相等:与HashSet同) (不能保证迭代输出顺序可与插入顺序一致) LinkedHashMap (与LinkedHashSet类似) 其他实现于Map的类: WeakHashMap (key为弱引用) IdentityHashMap |
HashTable (旧类;线程安全) (key和value均不可为null) (比较value相等:equals方法返回true ;比较key相等:与HashSet同) Properties (key value 都是String): getProperty(String) setProperty(String) load(InputStream) store(OutputStream) |
HashSet (hash算法决定位置) (无序,不重复,线程不安全,元素允许null) (判重复/相等:Object的hashcode与equals方法均返回true equal && hashcode) (不能保证迭代输出顺序可与插入顺序一致) LinkedHashSet (与上其他同) (使用双向链表维护:保证迭代输出的顺序与插入的顺序保持一致) |
PriorityQueue (不是按加入队列顺序排,而是按队列元素大小排,先出队最小的;违反了FIFO) |
ArrayList (线程不安全) (capacity属性默认10,动态再分配的Object[]数组) void ensureCapacity(int minCapacity) void trimToSize() |
Vector (旧类;线程安全) (capacity属性默认10,动态再分配的Object[]数组) Stack (先进先出) Object peek() Object pop() void push(Object) |
SortedMap接口 TreeMap (与TreeSet类似) |
SortedSet接口 TreeSet (红黑树算法决定位置) (有序,不重复) (判重复/相等:compareTo/compare返回0与equals方法返回true): (默认自然排序;定制排序:TreeSet中自定义非自然顺序对象必须实现Compartor compareTo(Object)) TreeSet() TreeSet(Collection c) TreeSet(Comparator c) Comparator comparator() Object first() Object last() Object lower(Object o) Object higher(Object o) 等与顺序有关的set操作 SortedSet subSet() SortedSet headSet() SortedSet tailSet() |
LinkedList (双向链表实现) (实现Deque List接口,添加了一些处理列表两端元素的方法) (可当作List stack queue使用) |
|||
EnumMap | EnumSet (无序,枚举值,元素非null) |
||||
Map.Entry接口: (key-value对的封装) Object getKey() Object getValue() Object setValue(Object value) |
Iterator 接口 : (forEach内部由Iterator实现) boolean hasNext() Object next() void remove() Enumeration: (I terator 对应的 旧类) Comparable接口 & Comparator接口: Comparable接口 (自然顺序): (实现了的类:String, Double, BigInteger等) int compareTo(Object o) Comparator接口 : int compare(Object o1, Object o2): 如果o1位于o2的前面,则返回负值;如果在排序顺序中认为o1和o2是相同的,返回0;如果o1位于o2的后面,则返回正值 |
同一框中为类继承或接口实现关系;
表格自上而下大体为接口实现与拓展关系;
最后一行:相关类
- 不用泛型:强制类型转换为Object
- 关于hash性能选项:
- Set比较:
- List比较:
- Map比较:
- Collections集合类:
(取代使用HashTable、Vector旧类的线程安全方法):
static方法:
排序:
查找/替换: