-
单列集合
Collection
-
List(有序,可重复,有索引)
- 实现类:ArrayList、LinkedList、
Vector(现已淘汰)
- 实现类:ArrayList、LinkedList、
-
Set(无序,不重复、无索引)
- 实现类:
-
hashSet (无序,不重复,无索引)
-
TreeSet (可排序,不重复,无索引)
-
LinkedHashSet(有序,不重复,无索引)
-
- 实现类:
-
-
双列集合
Map
- HashTable、HashMap、TreeMap、Properties、LinkedHashMap
具体信息请查看 API 帮助文档
1. 概述
为了在程序中保存数目不确定的对象,Java提供了一系列特殊的类,这些类可以存储任意类型的对象,并且长度可变,这些类统称为集合。集合类位于java.util
包中,使用时必须导包。
Java 集合框架是用于存储、操作和处理数据集合的一组类和接口。它提供了一种灵活、有效和方便的方式来管理数据。
Java 集合框架主要包括以下几个关键概念:
-
接口:集合框架定义了一系列接口来表示不同类型的集合,如
List
、Set
、Map
等。这些接口提供了对集合的基本操作和功能规范。 -
类:集合框架提供了一些实现了上述接口的类,这些类实现了集合接口中定义的方法。例如,
ArrayList
、HashSet
、HashMap
等。 -
层次结构:集合框架中的类和接口之间形成了一个层次结构。在这个层次结构中,
Collection
接口作为基本接口,定义了一些通用的集合操作,List
、Set
、Queue
接口继承自Collection
接口,分别提供了不同类型集合的特定操作。同时,Map
接口则是针对键-值对数据的集合操作。 -
迭代器:Java 集合框架提供了
Iterator
接口来遍历集合中的元素。通过迭代器,可以按顺序访问集合中的每个元素,进行添加、删除和修改等操作。 -
算法:集合框架还提供了一些算法类,可用于对集合进行排序、搜索和操作等常见操作。这些算法是通过静态方法提供的。
集合与数组的区别:
-
相同点
都是容器,可以存储多个数据
-
不同点
-
数组的长度是不可变的,集合的长度是可变的
-
数组可以存基本数据类型和引用数据类型
集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类
-
2. 分类
集合按照其存储结构可以分为两大类,即单列集合(Collection
)和双列集合(Map
)。
2.1 单列集合(Collection
)
-
Collection
:单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是List
和Set
。-
List
-
特点:元素有序(可以按照存储的顺序取出数据)、可重复、有索引。
-
接口的主要实现类是:
ArrayList
和LinkedList
。
-
-
Set
-
特点:元素无序且不可重复,无索引。
-
接口的主要实现类是:
HashSet
和TreeSet
-
-
2.2 双列集合(Map
)
-
Map
:双列集合类的接口,用于存储具有键(Key
)、值(Value
)映射关系的元素,每个元素都包含一对键值,其中键值不可重复且每个键最多只能映射到一个值,在使用Map集合时可以通过指定的Key
找到对应的Value
。例如:根据一个学生的学号可以成功的找到该学生。- Map接口的主要实现类:
HsahMap
和TreeMap
。
- Map接口的主要实现类:
3. 使用场景
3.1 单列集合
-
如果想要集合中的元素可重复(用的最多)
- 用ArrayList集合,基于数组的
-
如果想要集合中的元素可重复,而且当前的增删操作明显多于查询
- 用LinkedList集合,基于链表的
-
如果想对集合中的元素去重
- 用Hashset集合,基于哈希表的(用的最多)
-
如果想对集合中的元素去重,而且保证存取顺序
- 用LinkedHashSet集合,基于哈希表和双链表,效率低于Hashset。
-
如果想对集合中的元素进行排序
- 用Treeset集合,基于红黑树。后续也可以用List集合实现排序。