集合框架基础理解
概述
-
Java集合框架为程序员提供了预先包装的数据结构和算法来操纵他们,放在java.util包中,都是泛型类,使用时需要声明元素类型。
-
集合是一个对象,可容纳其他对象的引用。集合接口声明对每一种类型的集合可以执行的操作。
-
任何对象加入集合类后,自动转变为Object类型,所以在取出的时候,需要进行强制类型转换。
-
Java集合框架主要包括两种类型的容器:
- 集合(Collection),用于存储一个元素集合。
- 图(Map),用于存储“键/值”对映射。
-
常用集合的三大类:List、Set、Map
-
集合有内置工具类:Iterator迭代器、Comparator比较器
集合的分类
-
List
线性表,有序地存放元素,元素可重复。构造示例:
List<String> list01 = new LinkedList<String>();
List<String> list02 = new ArrayList<String>(); -
Set
无序集合,无序地存放元素,且元素不重复。
HashSet<String> set = new HashSet<String>(); -
Map
“键/值”映射的集合,无序,键唯一,值不唯一,键和值的类型可以不相同。构造示例:
HashMap<Integer, String> map = new HashMap<Integer, String>();
Map<Integer, String> map = Map.of(1, "dog", 2, "cat") -
Queue (本文不讨论)
队列,无序,可重复,先入先出。
- Set和List的区别
-
Set 接口实例存储的是无序的,不重复的数据。List 接口实例存储的是有序的,可以重复的元素。
-
Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变 (实现类有HashSet,TreeSet)。
-
List和数组类似,可以动态增长,根据实际存储的数据的长度自动增长List的长度。查找元素效率高,插入删除效率低,因为会引起其他元素位置改变 (实现类有ArrayList,LinkedList,Vector) 。
-
底层数据结构的分类
-
Array 顺序表(数组)
-
Link 链表
-
Hash 哈希函数散列表
-
Tree 排序树
实现类
-
下图是常用集合类和接口的继承关系,内部方法请查看帮助文档。
-
以下情况使用 ArrayList :
- 频繁访问列表中的某一个元素。
- 只需要在列表末尾进行添加和删除元素操作。
-
以下情况使用 LinkedList :
- 你需要通过循环迭代来访问列表中的某些元素。
- 需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作。

浙公网安备 33010602011771号