00:00
大家好,我是海波老师,接下来我们来讲一讲Java语法中的集合,那咱们这里呢,创建一个新的包啊,来写上它,咱们叫chapter,咱们的零七,咱们第七个章节啊,然后呢,我们这里点击new,我们选择它Java class,然后写上JAVA01,然后写上一个叫collection,这个collection就是集合的意思,我们点击class,然后呢,我们在这里呢,我们写上一个men,诶,然后呢,我们写上todo,诶,我们叫集合。那什么是集合呢?其实啊,生活中就有类似的概念了,所以我们说一下,哎,咱们的生活中也有我们集合的概念啊,就是这样,那比方说周末了,那么大家想要一起约着出去玩对不对,那么就会约个时间啊,然后呢,在某个地方呢,咱们大家一块集合,然后呢,人都到了以后,我们再一起出发去玩,对不对?哎,这就是我们所谓的一个集合的概念,但是大家注意了啊,这里的集合呢,它表示是在某个时间大家汇集到指定的地点,那所以这里的集合呢,它是一种将分散的数据呢汇总到一起的感觉,它是啊我们的一个动词,对不对,但是呢,我们要学的这个Java集合,它不是个动词,它是一个名词,所以我们这里写上我们Java中的集合,它是一个名词,它表述了什么概念呢?它是数据的一种容器。
01:20
它用于我们叫容纳数据,诶就是这样的,所以啊,我们说它是一个我们的名词的概念啊,那么这里的容器的概念呢,和生活中的容器的概念还是比较相似的,比方说呀,那么篮子里面可以放花吧,那么花篮嘛,对不对?盘子里面可以放水果,我们就叫果盘嘛,还有那个碗呀,我们可以盛饭,我们就叫饭碗嘛,那么这里的篮子呀,盘子呀,碗呀,我们是不是都可以称之为叫容器呢?对不对,只是他们容纳的东西是不一样的,这个没问题吧。生活中会有很多不同的容器,那么对应的咱们Java中也会有很多用于容纳数据的集合对象,并且呢,为了可以更方便的对集合中的数据进行操作,Java提供了啊,咱们叫完整的集合框架,什么叫集合框架啊,就是说它里面包含了很多的集合的类啊和接口啊,而不是那么一个两个的啊,那么他们都在我们Java的U包里面,诶这个咱们可以看一看,我们点开我们左边,然后找到这个JDK,然后找到这个叫Java base,咱们点一下,点完以后里面有一个叫做Java,再点,点完之后有个叫YouTube,这个呢就是我Java u包了,我们点一下,点完以后你会发现里面会有很多的这些类,对不对,其中就包含了大量的集合的类和相应的接口,诶,这个咱们说一下就行了,那么有了这么多以后,我们使用相应的类就可以创建具体的集合对象,并使用这些集合对象存储和管理数据。
02:45
好了,同学们,我们介绍完了集合的相关概念之后呢,我们想一下,我们什么时候会需要一个容纳数据的容器呢?哎,这是我们的一个问题啊,所以我们说一下,哎,我们突突这个问题呢,大家也想一下,就是我们什么时候它需要一个容纳。
03:04
数据的容器,也就是集合对象,还有我们再来说第二个问题,如果我们只是为了容纳数据的话,咱们之前所学的那个数组难道不行吗?所以呢,我们这里写上啊,就是说如果只是为了我们叫容纳数据,那么我们可以直接使用我们的数组,那为什么要学习我们的几何?好了,我们把两个问题给大家引出来之后,我们先给大家说我们的第二个问题,数组啊,咱们之前已经学习过了,它就可以容纳数据,这个咱们前面是讲过的,对吧?为什么还要学习集合相关的类和对象呢?这个问题其实很容易回答,因为啊,咱们数轴使用起来不方便,所以咱们的第二个问题呢,它的回答就是宿轴使用起来啊不方便,哎,就是这样的。那虽然咱们之前讲过呀,我们可以根据索引的方式呢,访问数组中的数据啊,会非常的快,对吧,但是这个索引啊,同学们它是有范围的,我们讲过,当你的数组的长度你确定了之后,这个索引的范围其实也就确定了,咱们画图呢,把它说明一下来,我们这里呢,简单的画一个我们的数组吧,所以我这里呢画一个方框啊来,然后呢,在里面呢,我们给它画上一个一个的小格子,我先把颜色给它变一下,我这里呢,画上一个一个的小格子啊来。
04:20
好了,放过来啊,放过来放到这儿,然后呢,放到这里就可以了啊,来把这个放到这边好了,那么这些小格子呢,就是用来容纳对象的,而一个数组对象呢,它在创建的时候是必须要明确它的这个小格子的个数的对不对,哎,所以啊,咱们这里呢,假设我们这个数组的长度啊,它就是三了,所以我们再写上它啊,咱们写上数组,然后呢,我们加上一个长度,哎,长度它等于三,这样的话不就可以了吗?行,颜色变成红色可以了啊。那么我们这么写了以后,那么就意味着我们这个数组当中啊,最多只能放三条数据,再给咱们讲过吧,对不对,如果我现在有五条数据的话,怎么办?同学们放不进去呀,来咱们看看啊,来我们这里呢,给他个小方框。
05:03
然后来啊,我们写上它,我们现在写上DATE1啊,咱们DATE1现在呢,我们这里复制,复制以后拿过来,诶拿过来,然后再复制,复制然后呢,翻过来好,翻过来以后我写上它,咱们叫DATE2,然后我这里呢,给他一个我们的DATE3,然后这里再来。啊,我们给他一个DATE4啊,我们给他一个DATE5行了,我们现在有五条数据对吧?五条数据我们颜色呢,给它稍微的我们变一变,然后呢,我们来看看我的这条数据呀,我是可以放到第一个小格子里面去,没有问题吧,同学们,诶咱们这么画一下啊好,画完了以后来我们复制一下,第二个数据呢,可以放到这个格子里面,第三个数据可以放到这个格子里面,你会发现我这两个数据我就根本就放不进去,对不对,如果你强行放的话,是不是就会出现错误呀,这个呢,咱们之前是给大家讲过的,对不对,哎,就是这样,诶老师既然数据多,那咱就多创建点小格子不就行了吗?哎,那当然行了,对不对?所以我们复制,复制以后我们拿过来,咱们把这个小格子呀,咱们给它拉长一些,好,你有五个数据,我就放五个小格子,这不就行了吗?诶所以同学们看这个应该没有什么问题啊,然后呢,我们把这个箭头呢,我们给它复制过来啊,咱们复制复复制以后呢,我们来啊给它放到下面去,然后把这个箭头呢,给它都是相反的就可以了,好把这个箭头我们放这边啊,咱们放这边把这个。
06:19
箭头我们放这边就可以了,大家可以看到我现在五个小格子放五条数据没有任何问题吧,对不对?五条数据啊,我们确实能放得进去,但是我问你了,如果我的数据没有五个,它只有三个怎么办?同学们来我复制一下,复制以后我假设我当前的这个数组啊,它现在有五个小格子,但是我的数据它只有三个,诶同学们这个时候怎么办?这两个小格子里面就放不了数据了,为什么呢?因为没有吗?那你不就浪费了吗?那你可能会说了,那既然我只有三个数据的话,那我为什么还要创建五个小格子的数组呢,对不对?其实啊,问题就在这儿了。有的时候啊,我们并不确定我们能获取多少条数据,比如啊,我们从数据库中查询出来的数据,咱们能确定它有多少条吗?对不对,你不确定的,还有呢,就是从文件中你获取数据,文件中有多少行数据你知道吗?你是不是也不确定啊,所以当我们数据的个数不确定的时候,其实使用数组这种结构来组织和管理数据,其实并不是一个好的选择啊,所以我们回过头来,咱们协商一下来。
07:25
我们在我们的数据的个数啊,不确定的场合,不确定的这个场合啊,我们的数组使用起来啊,不是很方便。不是很方便,好了,我们的这个问题给大家解释了一下,那么现在我们回过头来,我们给大家解释我们前一个问题,前一个问题就是说我们什么时候需要一个容纳数据的容器,也就是集合对象呢?其实啊,我们刚刚已经解释过了,就是当容纳数据的个数不确定的时候,那么我们用数组呢,不是一个好的选择,那么此时用Java提供的相关集合类就是一个顺理成章的事情了,为什么呢?因为Java集合框架中就包含了对不确定数据处理的相关集合类。好了,我们这里就写上一下我们的Java集合框架啊,Java集合框架它就包含了对不确定个数的数据处理的集合类。
08:17
啊,也就是说集合类,诶好了啊,那除了这个以外,还有没有别的原因呢?其实也有啊,大家想一想,咱们前面举的例子当中,大家约好了某一天在某个地点集合一起去玩,对吧?还记得吧?那为什么要集合呢?大家想一想,我自己去那个地点玩不就好了吗?诶,是不是因为啊,我自己玩没什么意思呀,那大家比较熟悉,我们一起玩会不会比较开心一些呢?对不对?诶就是这样,还有呢,如果我们不集合在一起的话,是不是就可能会错过去啊对不对?还有呢,玩的东西咱们得一样吧,大家集合以后,你玩你的,他玩他的,那是不是也没有任何的意义,对不对?好了,我们这里写上一句话啊,咱们简单总结一下,就是对不确定的有关系的数据,它进行我们叫相同的逻辑处理的场合,哎,我们使用我们的集合是一个不错的选择,哎就是这样好,我们这里呢,把前面也加上一个凸度啊,让它变个颜色啊大概的了。
09:18
破解了集合的概念之后啊,咱们回过头来,咱们说一下Java的集合啊,Java中的集合指的并不是一个单一的类或接口,而是一整套集合框架,其中包含了很多的集合类和集合接口,他们前面提到过了,对不对?我们左边啊,咱们已经打开了,你会发现里面会有很多的类和接口,对不对?那么这里的蓝色的这个C啊,它就表的是具体的类,而我们这个绿色的这个I呢,它就表示的是接口interface,那比方说呀,我们这里有个叫A,它就是一个集合类,可以通过它来构建具体的集合对象。而这里面呢,有一个叫collection,它是一个集合接口,它就定义了容器容纳和管理数据的方式及规则,所以啊,我们的类和接口有点不太一样,一个可以构建具体的对象,一个是用来定义规则的啊,这个同学们可能不太明白说什么意思呀,咱们使用结合对象容纳数据,怎么还有定义规则呢?大家想一想,生活中我们可以用桶装水吧,也可以用碗装水,对不对?但是我们用盘子装水的是不是就比较少见了,对吧?你说我们拿个盘子用它来装水,这个可能有啊,但是可能不常见,难道我们盘子不是个容器吗?诶,它也是呀,咱们一般炒菜不都是会用盘子装嘛,对不对?但是你用盘子装水确实很少看见,也不是很好吧,装的比较少,对不对啊,一个道理,Java中的集合也是这样的,会根据数据的不同而设计不同的集合规则,那么我们就可以选择不同的集合对象来容纳我们的数据了,这也恰恰说明了为什么Java中的集合类很多的原因,因为我们需要不同的规则嘛。好,刚才说了。
10:52
Java的集合呀,会根据数据的不同而设计出不同的集合规则,所以呢,根据数据的不同,Java的集合主要分为两大体系,这个地方咱们也说一下。
11:05
我们要根据我们数据的不同,我们Java的集合啊,它分为我们叫两大体系。哪两大体系呢?这里我们给大家简单的咱们说一下,首先我们的第一个体系呢,就叫单一数据体系,咱们叫做单一数据体系,什么叫做单一数据体系啊,也就是说这个体系当中的集合对象呢,它是把单一的数据作为容纳数据的基础单元,说的简单点就是我们一个数据就会放在这一个小格子里面,小格子里面放的就是这么一条数据,诶咱们回过头来,我们这里啊,有一个叫collection,咱们这里的collection接口就定义了单一数据体系集合的操作规则啊,所以咱们这里写上有个叫collection啊collection接口它就定义了相关的规则,那么这里的规则啊,主要就体现了数据的什么增加呀,修改呀,删除啊,查询啊,以及存储等等啊,那么还有一种数据体系呢,就是成对出现的数据,也就意味着我们来咱们写成二啊,咱们要成对。
12:06
啊,成对出现的数据体系,那什么叫成对出现呢?说白了就是两个数据的意思,把两个数据当成一个整体,这就叫成对的,那么为什么能当成一个整体呢?其实两个数据之间它是有关系的,什么意思呢?就是说来咱们写上。所谓的成对的数据,就是我们的两个数据它有关系,我们可以啊,根据我的第一个数据,咱们关联到我们的第二个数据,那比如啊,我可以根据身份证号码就关联到你的名称对不对,本质上你和你的身份证号不就是一个整体吗?如果存储的时候,我们就可以把它存在一个小格子里面,对不对,为什么呢?因为我通过那个身份证号码可以直接找到你嘛,对于这种成对的数据啊,我们为了好区分它们中的每一个,所以也称之为叫键子对数据,所以咱们这里写上它。咱们也称之为叫做建职对数据,比如身份证和我们的张三他俩就是一对是吧,比方说我们的身份证号,诶,然后呢,我们的张三他们俩呢,就是我们的一对数据了,那么这一对当中,我们把它就称之为叫建子对数据,那么身份证号我们就叫key啊,咱们有一个名词,我们称之为叫做key,然后呢,我们这里的张三呢,我们称之为叫value,为什么叫建子对啊,就是key和value的意思,我们就可以通过这个key关联到我们的value,那么这种成对数据的存储和管理呢,Java也定义了相应的集合规则,那么这个呢,在咱们的后面,我们后面呢,有一个咱们叫做map这样的一个接口,这个map接口专门是用来定义对它的一个规则处理,其实咱们可以看看啊,咱们打开,打开以后咱们观察一下,你会发现它里面就有个K,有一个V对吗?什么意思,咱们后面会讲,然后呢,往下往下以后大家看一下这个是不是K啊,你再往下看这是不是value啊,哎,所以啊,我们这种成对出现的。
13:59
数据呢,恰恰通过这种map的集合可以进行处理,还是非常不错的啊,这个咱们后面都会给大家详细的去讲好了,咱们加入的集合呢,就先介绍到这里。
我来说两句