开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第4天,点击查看活动详情
1、集合框架简介
-
集合可以看作是一种容器,用来存储对象信息。
-
所有集合类都位于
java.util包下,但支持多线程安全的集合类位于java.util.concurrent包下。 -
Java集合类主要由两个根接口
Collection和Map派生出来的,Collection派生出了三个子接口:
List、Set、Queue,
因此Java集合大致也可分成List、Set、Queue、Map四种接口体系。
-
List 代表了有序可重复集合,可直接根据元素的索引来访问;
-
Set 代表无序不可重复集合,只能根据元素本身来访问;
-
Queue 是队列集合;
-
Map 代表的是存储key-value对的集合,可根据元素的key来访问value。
2、集合和数组的区别:
1、数组声明了它容纳的元素的类型,而集合不声明类型。
2、数组是静态的,一个数组实例具有固定的大小,一旦创建了就无法改变容量了。而集合是可以动态扩展容量,可以根据需要动态改变大小,集合提供更多的成员方法,能满足更多的需求。
3、数组的存放类型只能一种(基本类型/引用类型),集合存放的类型可以不是一种(不加泛型时添加的类型是Object)。
3、Collection接口和Map接口
Collection集合框架图(虚线表示接口,实线表示实现类)
Map集合框架图(虚线表示接口,实线表示实现类)
3.1、List接口
- List是有序集合,可以通过下标访问集合中的元素。
- List允许重复值,允许有多个
null值。 - List接口是
Collection接口的子类。 - List的实现类有
LinkedList、ArrayList、Vector、Stack。
3.2、Set接口
- Set接口继承自
Collection接口,但是并没有对方法进行扩充,是Collection的子接口。 - Set接口中元素无序,并且会对元素进行对比,保证存入的元素不出现重复。
- Set接口不允许重复元素,最多包含一个
null值。 - Set接口的遍历方式:使用迭代器或增强
for循环。 - Set接口主要有两个实现类,分别是
HashSet和TreeSet。
3.3、Map接口
- Map集合中存储的元素是一组键值对象,是key与value是一个映射。
- Map提供了一个更通用的元素存储方法,每个键映射有一个值。
- Map集合中一个key对应一个value,不能存在相同的key值,value值可以相同。
- key和value之间存在单向一对一关系,即通过指定的key总能找到唯一确定的value
- Map接口的常用实现类有:
HashMap、Hashtable、LinkedHashMap、TreeMap、ConcurrentHashMap。