Java 集合类

集合类存放于 java.util 包中。集合类存放的都是对象的引用,而非对象本身。Java 并发包 java.util.concurrent.* 中存放适用于高并发即线程安全的集合类。这里只介绍 java.util 下集合类。

首先看一下 Java 常用集合类的继承关系:

|-- Iterator
|   |-- Collection
|   |   |-- List
|   |   |   |-- LinkedList
|   |   |   |-- ArrayList
|   |   |   |-- Vector
|   |   |   |-- Stack
|   |   |-- Set
|   |   |   |-- SortSet
|   |   |   |-- TreeSet
|   |   |   |-- HashSet(基于 HashMap 实现)
|   |   |   |-- LinkedHashSet
|   |   |-- Queue
|   |-- Map
|   |   |-- HashMap
|   |   |-- LinkedHashMap(基于 HashMap 实现)
|   |   |-- HashTable
|   |   |-- WeakHashMap
|   |   |-- TreeMap

所有的集合类,都实现了 Iterator 接口,这是一个用于遍历集合中元素的接口,主要包含以下三种方法:

  1. hasNext() 是否还有下一个元素。
  2. next() 返回下一个元素。
  3. remove() 删除当前元素。

Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是映射(Map),存储键/值对映射。Collection 接口又有 3 种子类型,List、Set 和 Queue,再下面是一些抽象类和具体实现类等。

其中 Set 中不能包含重复的元素,List 是一个有序的集合,可以包含重复的元素,提供了按索引访问的方式。Map 不能包含重复的键。

是否有序 是否允许元素重复
Collection
List
Set AbstractSet
HashSet
TreeSet
Map AbstractMap key 必须唯一
HashMap key 必须唯一
TreeMap key 必须唯一

集合类的一些最佳实践

  1. 使用正确的集合类型,如果集合元素大小固定,使用 Array 代替 ArrayList
  2. 如果能够设置初始容量,并且能预估集合类大小,进行设置,避免重新计算 Hash 值或扩容
  3. 为了类型安全可以使用泛型
  4. 方法返回类型是集合的,返回数量为0的集合,代替返回 null

Add a Comment

电子邮件地址不会被公开。 必填项已用*标注