一、简单的集合框架图
这里只列举几个常用的集合。学习Java集合要先从其接口入手,了解接口的特性,方便我们把握具体实现类的特点,进而根据其特点选择合适的集合使用
二、Collection接口与Map接口
该接口与Map接口将Java集合分成了两大类。两种集合都支持使用泛型。继承Collection接口的集合以单元素的形式存储对象,而继承Map接口的集合采用“键-值”的形式存储对象。
三、Set接口与List接口
Set接口与List接口继承了Collection接口,将Collection集合又进一步分成两大类。其各自的特点如下:
List集合:
- 元素有序,取出顺序与插入顺序有关
- 元素可重复
- 支持索引访问
Set集合:
- 元素无序,取出顺序与插入顺序无关
- 元素不可重复
- 不支持索引访问
3.1、List集合常用实现类
- ArrayList:底层数据结构是数组,线程不安全
- Vector:底层数据结构是数组,线程安全
- LinkedList:底层数据结构是双向链表,线程不安全
3.2、 Set集合常用实现类
- HashSet:底层数据结构是哈希表
- TreeSet:底层数据结构是一个自平衡二叉树,保证元素的排序方式。
四、Map接口
Map也称为映射,采用键值对的形式存储元素。其特点如下:
- 一个key对应一个value
- key不可重复,value可以重复
Map集合常用实现类有:HashMap、TreeMap。
五、集合与数组的比较
在Java中,已经存在了数组可以存放数据,那为何还要使用集合呢?
在平时使用中,我们不止要存放数据,还常常需要对这些数据进行一定的操作。而集合封装了大量的操作这些数据的方法,方便了我们的使用。数组与集合的特点如下:
数组:
- 既可以存放基本数据类型,也可以存放引用数据类型。但一个数组中的元素类型唯一。
- 长度确定后不可变
- 操作元素的方法需要自己实现
集合:
- 只能存放引用类型。但在不使用泛型时,一个集合可以存放多种类型数据。
- 长度可变。
- 提供了“key-value”形式的存储方式
- 集合内部封装了大量操作元素的方法
- 不同的集合其底层采用的数据结构不同,可以根据场景灵活的选择。
总之,集合比数组复杂,但却使用方便。另外,集合在面试中也是一大考点,需要牢牢掌握各种集合的特点及使用方法。关于其各个实现类将在后面分篇介绍。