容器概述
Java容器类类库的用途是持有对象,分类:
- Collection:存储对象的集合
- Map:存储键值对对象,key唯一
接口 | 描述 |
---|---|
List | 按照插入顺序保存元素 |
Set | 不能有重复元素 |
Queue | 按照排队规则确定对象产生的顺序(通常与被插入顺序相同) |
Map | 键值对 |
List
实现类 | 描述 |
---|---|
ArrayList | 基于动态数组实现,支持随机访问 |
LinkedList | 基于双向链表实现,只能顺序访问,但可快速地在链表中间插入和删除元素,还可以用作栈、队列、双向队列 |
Vector | 和ArrayList类似,但线程安全,唯一可以自我扩展的序列 |
Set
实现类 | 描述 |
---|---|
HashSet | 基于哈希表实现,查询速度快,但是不支持有序性操作 |
LinkedHashSet | 继承自HashSet,具有HashSet的查找效率,内部使用双向链表维护元素的插入顺序 |
TreeSet | 基于红黑树实现,支持有序性操作,但查询效率低 |
Queue
实现类 | 描述 |
---|---|
LinkedList | 用其实现双向队列 |
PriorityQueue | 基于堆结构实现,用于实现优先队列 |
Map
实现类 | 描述 |
---|---|
HashMap | 基于散列表的实现,取代HashTable,允许空键值 |
HashTable | 类似HashMap,但其线程安全,不允许空键值 |
LinkedHashMap | 使用链表维护内部次序,遍历效率高 |
TreeMap | 基于红黑树实现,有序,常用于排序(按照key) |
常用方法
Collection(集合父接口) | 描述 |
---|---|
size() | 返回集合中的元素数 |
isEmpty() | 集合不包含元素则返回true |
contains(Object o) | 集合包含指定元素则返回true |
iterator() | 返回集合中的元素迭代器,不保证顺序 |
toArray() | 转换为数组 |
add(E e)、remove(Object o) | 添加/删除一个元素,返回boolean值 |
retainAll(Collection<?> c) | 从该集合中删除所有不包含在指定集合中的元素 |
clear() | 从集合中删除所有元素 |
List中增加的方法 | |
get(int index) | 返回指定位置的元素 |
set(int index,E element) | 替换指定位置的元素 |
sort() | 排序,默认升序 |
subList(int fromIndex, int toIndex) | 返回指定范围的list,[fromIndex, toIndex) |
Map接口 | 描述 |
---|---|
size() | 返回map中键值映射的数量 |
isEmpty() | 不包含键值映射,则返回true |
containsKey(Object key) | 此映射包含指定键的映射,则返回true |
containsValue(Object value) | 此映射将一个或多个键映射到指定的值,则返回true |
get(Object key) | 返回此映射指定键所映射的值 |
put(K key,V value) | 将指定值与键相关联 |
remove(Object key) | 如果存在则删除键的映射 |
putAll(Map<? extends K,? extends V> m) | 将指定映map的所有映射复制到此映射 |
clear() | 删除所有映射 |
keySet() | 返回map中所有键的Set视图 |
values() | 返回map中所有值的collection视图 |
entrySet() | 返回map中键值映射的set视图 |
replace(K key,V value) | 替换 |