集合分:List集合,Set集合,Map集合
集合是java中提供的一种容器,可以用来存储多个数据。
集合和数组既然都是容器,它们有啥区别呢?
-
数组的长度是固定的。集合的长度是可变的。
-
数组中可以存储基本数据类型值,也可以存储对象,而集合中只能存储对象
List集合:
java.util.List
接口继承自Collection
接口,是单列集合的一个重要分支,习惯性地会将实现了List
接口的对象称为List集合。
List接口特点:
- 查询慢,增删快
- 可以通过下标索引来操作
- 有序且可以重复
注意:List集合关心元素是否有序,而不关心是否重复,请大家记住这个原则。例如“张三”可以领取两个号。
常用方法:
List除了从Collection集合继承的方法外,List 集合里添加了一些根据索引来操作集合元素的方法。
1、添加元素
-
void add(int index, E ele)
-
boolean addAll(int index, Collection<? extends E> eles)
2、获取元素
-
E get(int index)
-
List subList(int fromIndex, int toIndex)
3、获取元素索引
-
int indexOf(Object obj)
-
int lastIndexOf(Object obj)
4、删除和替换元素
-
E remove(int index)
-
E set(int index, E ele)
List集合特有的方法都是跟索引相关:
效果:
Set集合
Set接口是Collection的子接口,set接口没有提供额外的方法。但是比Collection
接口更加严格了。
特点:
- 查询慢,增删快
- 不可以通过下标索引操作
- 无序且不重复
Set集合支持的遍历方式和Collection集合一样:foreach和Iterator。
HashSet:
HashSet 是 Set 接口的典型实现,大多数时候使用 Set 集合时都使用这个实现类。
java.util.HashSet
底层的实现其实是一个java.util.HashMap
支持,然后HashMap的底层物理实现是一个Hash表。
HashSet 按 Hash 算法来存储集合中的元素,因此具有很好的存取和查找性能。
效果:
Map接口:
-
Map
中的集合,元素是成对存在的。每个元素由键与值两部分组成,通过键可以找对所对应的值。 -
Collection
中的集合称为单列集合,Map
中的集合称为双列集合。 -
需要注意的是,
Map
中的集合不能包含重复的键,值可以重复;每个键只能对应一个值(这个值可以是单个值,也可以是个数组或集合值)。
Map实现类之一:HashMap
- HashMap是Map接口使用最频繁的实现类
- 通过键值对(key-value)来存取数据
- 所有的key构成的集合Set:无序,不可重复
效果: