集合类
集合类是一种工具类,像是容器,储存任意数量的具有共同属性的对象。
集合的作用:
- 在类的内部,对数据进行组织
- 简单而快速的搜索大数量的条目
- 有的集合接口提供了一系列排列有序的条目,并且可以在序列中快速的插入或删除有关元素
- 有的集合接口提供了映射关系,可以通过关键字(key)去快速查到对应的唯一对象,关键字可以是任意类型的
集合和数组的区别:
- 数组长度固定,集合的长度在运行时可以动态扩展
- 数组可以通过下标访问元素,类型固定,而有的集合可以通过任意类型的键(key)查找所映射的具体对象。
泛型可以规定集合中的数据类型:
集合中的元素,可以是任意类型的对象(对象的引用),如把某个对象放入集合,则会忽略他的类型,而把他当作Object处理。
泛型则是规定了某个集合只可以存放特定类型的对象,会在编译期间进行类型的检查,可以直接按指定类型获取集合元素。泛型集合中,不能添加泛型规定的类型及其子类型之外的对象,否则会报错!
泛型集合中的限定类型不能使用基本数据类型,可以使用包装类型限定允许存入的基本数据类型。int–>Integer,long–>Long,boolean–>Boolean,如:List list = new ArrayList();
Java集合类包含两部分
- Collection接口(存储一个独立的对象),包含三个子接口
1、List接口,存储排列有序可重复的对象
2、Queue接口,存储排列有序可重复的元素
3、set接口,存储的元素无序不可重复 - Map接口,内部以 key和value两个对象为映射存储数据
List接口及其实现类–>ArrayList
- List是元素有序并且可以重复,被称为序列
- List接口可以精确控制每个元素的插入位置,删除某个位置的元素
- ArrayList底层是由数组实现的
Queue接口及其实现类–>LinkedList
LinkedList是基于链表的实现方式
LinkedList与ArrayList的区别:对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
Set接口及其实现类–>HashSet
- set接口是元素无序且不可以重复的集合,被称为集
- HashSet—-哈希集,是Set一个重要的实现类
- Set中的循环只能使用forEach以及Iterator。
- Set中添加某个对象,无论添加多少次,最终只会保留一个该对象(对象的引用),并且保留的是第一次添加的。
Map接口及其实现类–>HashMap
- Map接口提供了一种映射关系,其中的元素以键值对(key-value)的形式存储,能够实现根据Key快速查找value。
- Map中的键值对是以Entry类型的对象实例存在的
- 键(key)不可以重复,value可以;每个键最多只能映射到一个值,一个值可以对应多个键。
- Map接口提供了分别返回key值的集合、value值的集合以及Entry(键值对)的集合的方法
- Map支持泛型
- HashMap是Map的一个重要的实现类,也是最常用的,基于哈希表的实现。
- HashMap中的Entry对象是无序排列的
- key和value值都可以为null,不过HashMap只有一个key为null的映射(key不能重复)
注意:对象存入集合都变成Object类型,取出时需要类型转换。