理解java集合——集合框架 Collection、Map

时间:2021-10-03 05:34:46

1、概述: @white

Java集合就像一种容器,可以把多个对象(实际上是对象的引用,但习惯上都称对象)“丢进”该容器中。

2、Java集合大致可以分4类: @white

Set:代表无序、不可重复的集合;

List:代表有序、重复的集合;

Map:代表具有映射关系的集合

Queue:代表一种队列集合实现;(Java 5增加)

3、Java集合和数组的区别 @white

1、长度:

数组:只能保存定长的数据,长度在初始化时指定;

集合:可保存数量不确定的数据。

2、保存数据类型:

数组:基本类型和对象。

集合:只能保存对象(实际保存对象的引用变量),基本数据类型变量需转换为对应的包装类才能放入集合类中。

4、接口和类图说明: @white

4.1 整体说明:

这个主要是看类图,如果你结合类图,仔细看过源码,那么这些理解都不是问题。因为你只是看教程,缺少第一手资料,缺少细节,反而总是更加不理解。

4.2 类图:

https://upload-images.jianshu.io/upload_images/2993097-d92fdc13030b2126.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/650

图片来源:Java集合框架学习-----Collection接口概述 - 简书 https://www.jianshu.com/p/b878a4e1c762

4.3 类图图例使用说明:

接口:用虚线框表示:

类:用实线框表示;

接口和接口之间的实现:用虚线和空白三角表示;

类与类之间,以及类与接口之间的实现:用实现线和空白三角

produce关系-即之间有关系,但并非直接实现:虚线和实心三角

4.4 Collection接口:主要包含如下子接口

Set 接口:

List 接口:

Queue接口:(队列:先进先出)

4.5 Map接口和Collection接口的关系:(之间没有实际继承关系,只是)

1、虽然总是将Map和List 以及Set 一起说,但实际上Map和List 以及Set并不是同级关系。List 和Set是Collection的子接口;Map并不是,Map并不属于Collection接口系列。

2、Map和Collection的关系在于Map的实现上。因为Map的所有key实际是一个Set对象,Map的所有value也是一个Collection接口对象。(可看Map接口源码)

3、其他,并没有太多关系。

5、各个接口特性说明以及常用实现类: @white

5.1 Set 接口: @white

5.1.1 特性说明:

元素不允许重复,无序

5.1.2 常用实现类:

HashSet:

LinkedHashSet

TreeSet

EnumSet

5.2 List 接口: @white

5.2.2 特性说明:

有序

5.2.2 常用实现类:

ArrayList:

LinkedList:

Vector

Stack

5.3 Queue接口: @white

5.3.2 特性说明:

队列:先进先出

5.3.2 常用实现类:

PriorityQueue

Deque(子接口)

ArrayDeque

5.4 Map接口 @white

5.4.1 特性说明:

保存具有映射关系的数据;

key和value都可以是任何引用类型的数据。

Map的key不允许重复(任何两个key比较总是返回false)

实质:所有key是一个Set集合,所有value几乎是一个List集合

5.4.2 常用实现类:

HashTable

HashMap:

LinkedHashMap

TreeMap:

6、其他相关接口说明: @white

6.1 Iterator接口

6.1.1 概念:

被称作迭代器,是Collection接口的父接口。

主要用于遍历Collection集合中的元素。

6.1.2 主要注意:

修改迭代变量的值对集合元素本身没有任何影响。

6.1.2.1 原因:

使用Iterator对集合元素进行迭代时;

Iterator并不是把集合元素本身传给了迭代变量,而是把集合元素的值传给了迭代变量(就如同参数传递是值传递,基本数据类型传递的是值,引用类型传递的仅仅是对象的引用变量)

所以除非实际修改该对象指向的内容,否则不会对集合产生影响。

6.1.2.2 原因分析和详解:

具体可以参考:由浅入深理解java集合(一)——集合框架 Collection、Map - 简书 https://www.jianshu.com/p/589d58033841

7、参考: @white

本文参考:由浅入深理解java集合(一)——集合框架 Collection、Map - 简书 https://www.jianshu.com/p/589d58033841(这个系列的所有文章)