本系列文章主要对java集合的框架进行一个深入浅出的介绍,使大家对java集合有个深入的理解。
本篇文章主要具体介绍了Collection接口,Map接口以及Collection接口的三个子接口Set,List,Queue。
什么是集合
Java集合类存放于 java.util 包中,是一个用来存放对象的容器。
集合有以下几个特点:
①集合只能存放对象。比如你存一个 int 型数据 1放入集合中,其实它是自动转换成 Integer 类后存入的。
②集合存放的是对象的引用,对象本身还是放在堆内存中。
③集合可以存放不同类型,不限数量的数据类型。
集合和数组的区别
1.数组长度需初始化时指定长度,只能保存定长的数据;而集合可以保存数量不确定的数据。
2.数组可以存基本类型,也可以是对象;
集合里只能保存对象(实际上保存对象的引用变量)。
Java集合介绍
主要分为Collection接口和Map接口,Collection接口有3个主要的接口List,Set,Queue
整体框架如下:
图源于网络
迭代接口Iterator
所有的集合类都实现了Iterator接口,这是一个用于遍历集合中元素的接口
所包含方法如下:
Collection接口
Collection接口是处理对象集合的根接口,其中定义了很多对元素进行操作的方法,框架图中的AbstractCollection提供Collection部分实现的抽象类。
Collection接口中的所有方法
其中比较常用的方法如下
-
add(E) 添加一个元素到集合中
-
addAll(Collection) 将指定集合中的所有元素添加到集合中
-
remove(Object) 删除一个元素
-
contains(Collection) 方法检测集合中是否包含指定的元素
-
toArray() 方法返回一个表示集合的数组
Collection三个子接口
Collection的常用方法,在子接口中同样常用,下面不再重复说明
1.List(有序、可重复)
List里存放的对象是有序的,同时也是可以重复的,List关注的是索引,拥有一系列和索引相关的方法,查询速度快。因为往list集合里插入或删除数据时,会伴随着后面数据的移动,所有插入删除数据速度慢。
List接口中的所有方法
其中主要比较常用的方法如下
-
get(int) 获取元素
-
set(int, E) 设置元素到某个索引位置
-
add(int, E) 添加元素到某个索引位置
-
add(int, E) 删除某个索引位置元素
-
sort(Comparator) 排序
2.Set(无序、不能重复)
Set里存放的对象是无序,不能重复的,集合中的对象不按特定的方式排序,只是简单地把对象加入集合中。
List接口中的全部方法
Set只继承了Collection,并没有添加自己的方法,所以常用方法与Collection一样
3.Queue(有序、可重复、先进先出、不可随机访问)
队列是“先进先出”容器。插入新元素只能添加到队列的尾部,获取或删除元素只能是队列头部的元素。
Queue中的所有方法
需要注意的是,新增、检索、删除都分别提供了两种方法,请注意一下它们的区别
4.Map(键值对、键唯一、值不唯一)
Map集合中存储的是键值对,提供key(键)到value(值)的映射,键不能重复,值可以重复。
Map的所有方法如下图
常用方法如下:
-
get(Object) 获取元素
-
put(K, V) 添加元素
-
remove(K) 删除元素
-
entrySet() 获取Entry集合,一般用于遍历Map里的元素
Map中还包括一个内部类Entry,该类封装了一个key-value对。Map内部存储是通过Entry进行存储的。 Entry包含如下三个方法:
List、Set、Map的区别
1.继承
List和Set继承Collection接口,而Map不是
2.重复性:
① List允许有重复的元素。任何数量的重复元素都可以在不影响现有重复元素的值及其索引的情况下插入到List集合中;
② Set集合不允许元素重复。Set以及所有实现了Set接口的类都不允许重复值的插入,若多次插入同一个元素时,在该集合中只显示一个;
③ Map以键值对的形式对元素进行存储。Map不允许有重复键,但允许有不同键对应的重复的值;
3.有序性:
① List及其所有实现类保持了每个元素的插入顺序;
② Set中的元素都是无序的;但是某些Set的实现类以某种殊形式对其中的元素进行排序,如:LinkedHashSet按照元素的插入顺序进行排序;
③ Map跟Set一样对元素进行无序存储,但其某些实现类对元素进行了排序。如:TreeMap根据键对其中的元素进行升序排序;
4.空值(Null)问题:
① List允许任意数量的空值(Null)
② Set最多允许出现一个空值(Null)(因为Set集合不允许元素重复,实际可上重复插入空值(Null))
③ Map只允许出现一个空键(Null),但允许出现任意数量的空值(Null)
总结:
List中的元素,有序、可重复、任意空值
Set中的元素,无序、不重复、只有一个空元素
Map中的元素,无序、键不重,值可重、可一个空键,多可空值
以上是java集合框架的概括内容,通过这篇文章主要了解一些基本的概念以及对集合的操作方法。
后续文章将对java集合中的具体实现类进行深入了解。有兴趣的话可以观看后续内容,进一步了解java集合内容。