00:00
好了,我们在这里再重申一下啊,首先第一个呢,大家知道集合它是容器对吧?哎,可以存储多个元素的,第二个要知道集合呀,不能存基本类型,也不能存对象啊,集合里边存的是对象的内存地址。第三个,要知道Java中集合是每一个集合对应不同的数据结构。不同数据结构采用存储方式不一样,对吧?你需要知道的是在什么时候我们选择哪一个集合?Java中都把集合封装好了,我们直接用就行了啊,直接用就可以了来,那么第四个就是集合在Java jdk中。哪个包下,记住啊,叫Java u包下,都是加va u箱在这个包下啊,所有的集合类和集合接口都在什么呀?都在Java u包下,明白吗?都在这个包下,提前先给大家说一下啊包名,这是包名。好了,那么我觉得这样啊,为了让大家掌握集合这块的内容啊。
01:10
最好能将什么呀?能将集合的集成结构图背会。啊,最好能将集合的集成结构图背回,就是说整个集合的一个体系是怎样的一个结构啊,就是集合整个这个体系是怎样的一个结构啊,你需要有印象啊,你需要有印象,各位啊,需要有印象,那行了,那咱们还是老规矩吧,我们就用一下这个叫star u ML去画一下这个继承结构,行吧,哎,继承结构啊,在这块呢,有个star ul昨天不是装了吗?对吧?哎,这个啊,OK就行了啊OK就行了。嗯。嗯。行,那这块的话,咱们这样啊,咱们来看看这个集合这一块,注意听了各位啊,来找一找Java u Java u这块呢,往下走啊,有一个叫collection的。
02:11
这个大家看这个接口啊。叫做collection,对不对,哎,它还有一个负接口叫table。可迭代的,看见没有,那这个接口我想说一下啊,是我们集合里边超级超级负接口啊,超级负接口各位。来拿过来拿过来啊,我在哪,在这个上面画吧。在这上面画的话,我画一个这应该是什么接口是吧。啊。超级接口啊,Interface吗?李松老师,后边这是个什么东西,这是泛型啊,泛型咱们现在先不用管它,好吧,来。接口走。嗯。Collection。Collection接口啊。那么这个collection接口啊,它有一个什么呀接口。
03:04
这个接口它有个接口啊。这个负接口是谁呢?是inter。这个以ale结尾的able表示什么呀?表示可迭代的。可迭代的啊,我们把这个图画一下各位啊。这个没办法,你只能去记了啊,来叫。那么我们的和我们的able这个之间的关系属于一种继承关系,我们看一下是不是一种继承关系来。看这里继承吧。那么子呢,现在去继承父应该是用哪个箭头啊?应该是用这个箭头是不是。啊,这叫泛化啊,泛化继承空心箭头指向负。这样。啊,这样的。嗯。
04:06
这是添加属性是吧,这是添加我们的一个方法啊。嗯。啊,这是添加这个可见度的各位啊,这个是这个这个可以可以研究一下啊,看一看来往下走。拖一下啊。这个是我们集合的一个超级接口,各位啊。但是我得在这儿提前给大家说一个另外一个东西啊,说一下在Java中啊集合。分为两大类啊,一类是单个方式。存储元素。啊一类是以什么呀见直对。的方式存储元素。啊。那单个方式存储元素。
05:02
这一类集合中超级接口是Java下的啊。那。以什么呀,建直对的方式。建直对的方式啊。存储元素这一类集合。啊,这一类集合中超级负接口是谁?是java.u map什么意思啊,给大家举个例子,就是说呀。我们在Java中啊,这个集合呢,它是这样的,有一类集合是这样的,还有一类集合是这样的,各位。你明白吗?啊。这是这一类集合。
06:01
这图画的啊。像这种集合就属于什么呀,一个一个存的对吧,你往这儿存一个,你往这儿存一个,你往这儿存一个,你往这儿存一个,你往这儿存一个,这种集合呢,我们叫做collection,各位啊。然后呢,他还提供了一种集合,什么集合就是就是依存对吧,这是键,这是值啊,这是key啊,Key value明白什么意思啊K。啊,Value的形式叫键值对的方式。对吧,哎值一对对存啊,键值对吧,键值,哎键值键值啊,这是一对一对存,那么这个呢,我们叫map。这个叫collection。啊,这个简单先理解一下啊,简单先理解一下,我先关了啊,不保存了。对,就是单个方式存储元素的就是Java u collection,然后成键值对的方式存储元素的话,就是Java u的map这个接口啊,那我们现在画的是什么呀?是我们的一个叫做呃,单个方式存储的这个体系结构当中,将来我在这块呢,画什么呀?这种建对的方式啊,建筑的方式,我们先看单个的单个上面这个是什么,这是我们的一个interable这个collection接口上面有个interable表示这个接口表示什么意思啊。
07:16
我们可以写个注释。啊,写个注释,这个接触表是可迭代的。翻译啊,叫可什么可迭代的,可变利的。所有集合元素都是可迭代的,可变粒的啊,就这个意思。明白吧,啊,这就是这个接口的意思,那么这个接口里边有什么方法呢?我们来看一下啊,这个叫做Java YouTube包下面的一个collection collection不是collection,是collection。跑哪啊这collection啊,然后这个collection接口呢,我们上面有个able,这个able接口里边有一个方法。
08:07
看见没?Eer方法,这个方法返回一个ER接口,很有意思啊,大家注意看啊,这有点有点意思,就这个里边有一个方法,我们加一个方法。加一个属性。这个还是没有这个瑞生Rose好用啊。嗯,加一个属性是在右边这加上去了啊,看一下这个属性这块我就给他删掉吧。这个位置,这是一个方法,这个方法叫什么。能不能给他?你啊。Name,好,这应该是名字。
09:04
啊,这个事,但是在这个图上不显示啊。图上不显示。完后从边。是不是,那么他通过这个eer方法是干什么呢?是返回一个什么呀,叫做。对象。返回这么一个东西。看啊这么一个东西。这是个接口吧。我在这画一下各位啊,就在这儿画吧,来点这个class这块有个接口啊,来放过来。那么现在呢,我们这个接口类型是怎么拿到的呢?是通过这个集合调用什么呀,我们这个接口里面的这个,哎E这个方法。那调这个方法拿到的,那么这个呢,和我们这个的关系是什么,我就直接画了各位啊这块啊,是一个关联关系啊,关联关系是一个实现的箭头就行了。
10:09
啊,是这样一个情况。而这个叫做什么呢?这个叫做迭代器,各位啊,叫做迭代器。没事,我说完你就知道了啊,来这个叫做迭代器集合的迭代器对象啊,集合的迭代器对象。那有同学说,老师我这个集合的迭代器对象是干什么的呢?哎,那当然是拿这个迭代器去迭代集合的。就是将来假如说你要是通过这个,你要是往集合里边装的元素,装这个元素,那个元素装这个元,那个元素装满了,这个时候你想把集合里边一个一个一个取出来的话,你就需要调用这个集合它的迭代器这个对象上的方法完成集合当中元素的迭代。那你怎么去得到这个迭代器啊,那么你需要调这个集合的一个方法,什么方法呀,叫eer。
11:06
因为这个集合接口继承这个负接口叫able嘛。这里边儿有个方法。嗯。变个形吧,这样这样好看点。来往这拖一拖。看一下啊,来这个接口都给它变一下行吧。变成这个。都给它变成这个啊,这是接口。啊。来。这边也是一个接口。这是三个接口,各位啊,三个接口你看它画个圈是吧,接口这是一个负接口,它的负接口是特表示可迭代的,可便利的啊来这个换个行。
12:02
啊。来,这也换。嗯。然后呢,我们集合的。一个E,呃,Eerator啊,这个是一个什么迭代器,什么意思,我给大家写一下代码,你就理解了。啊,这个代就不再保留了,各位啊,是说collection这个集合对象明白吗?当然这是个接口啊,将来会有对象,这个对象呢,它呢怎么着呢?它继承了terable吗?Interable里不是有个方法叫terator吗?那你就可以子接口继承负接口把方法继承过来了。你可以调用这个特。瑞这个接口的方法啊,第一个方法之后,你可以返回一个什么,你只要执行这个方法,它就会返回这么一个对象,这个对象叫什么叫做。
13:00
啊,而这个it是什么?是迭代器对象,你拿这个迭代器对象干什么,是迭代这个集合的。就这个意思。啊,我这么写你可能应该就理解了,各位啊,你看他的,你别管他是为什么这样设计,就是说现在听这个东西能不能听明白,现在这个集合继承以terrible这个接口,这个接口里边有个方法继承到我子接口上了,我子接口只要去调这个方法,就可以拿到这个集合所依赖的迭代器对象,你拿这个迭代器对象的目的是什么?是为了通过这个迭代器将来干什么呀?去迭代我们这个集合中的元素,便利我们集合中的元素,就是这个意思。所有机会都是可迭代的。他既然继承,他表示可迭代的呀,那意思就是说。来。写上啊。所有集合记成什么呀?Table的含义是?
14:05
所有集合都是什么可迭代?明白吧,所有集合元素都是可替代的,这就是可替代的意思,就像我们刚才在我们的练习当中,作业当中,我们提了一句话叫什么呀,就所有的武器都是可攻击的,所有的这个武器都是可什么呀,可移动的对吧,那个叫movable。啊,叫做shortable,这个叫eterable,这个eter表示什么呀?可迭代的里边有个方法,你看这个star还是不行啊,在这不能显示出来,在Rose里可以显示这个方法。然后呢,我们有这个方法,通过这个集合去调这个方法,通过这个集合对象去调这个方法,调这个方法。迭代是什么意思?哎,我刚讲过呀。迭代我刚讲过呀。便利啊。
15:05
就是便利,就是迭代,迭代就是便利。啥意思?这不是一个集合吗?集合里边有一个元素,有一个元素,有一个元素,有一个元素能够你这个元素在这儿一个一个拿出来,一个一个拿出来,一个一个拿出来,这个过程叫便利,这个过程叫迭代。就一个一个拿出来,对,就是便利,就是迭代。就这个意思啊。那这个集合继承了这个接口,继承了这个方法,这个集合调这个方法的目的是拿到它。拿到一个迭代器对象,那么迭代器这里边有什么方法?我们来看一下啊,看一下啊叫特,这不特迭代器吗。Or,结尾的是不是这里面有hasnana和remove有三个方法。Has next next remove啊来来看看啊,这块呢,直接双击一下,然后这边呢,我们有什么样属性,这是什么样方法,是不是来这个方法的话,我们改一下名字,你看多费劲。
16:14
来,这个方法的名字我们叫has next。有这样一个方法。啊,它这个地方呢,还有什么呀,还有一个方法,这个方法叫耐克斯。它还有一个方法,这个方法叫什么叫做。Remove。明白吗?就是我们现在通过这个。调用这个嘛,Collection啊,去调用什么呀,这个方法。拿到迭代器,迭代器呢,里边有这样三个方法。来完成什么呀,迭代。便利的。啊,便利的。
17:13
哎,可以啊,可以,这个工具是可以的啊,来咱们这块。找找啊这个东西。差不多是吧。啊显示啊显示这个方法。就这个意思啊,你看我们这个接口里面有这个方法。然后呢,我们调用这个集合的这个方法。是不是哎拿到什么呀,迭代器,迭代器里边通过这个方法这个方法这个方法这三个方法完成什么集合的便利。啊,完成几个原理行了,这是我们这个集合这块的一个啊,Collection这块的一个负啊,以及它的关联,注意这块啊,不是空心箭头指向它啊,因为它和它之间不是一个继承关系,这属于什么呀?这属于关联关系啊,这边属于泛化,来,我在这边写上一个注释吧,这属于泛化关系。
18:06
泛化关系啊。其实或者叫什么继承关系。提成关系啊,就是大家之前所学的那个一字嘛。啊。来,那么这块的话,咱们和他是什么关系呢?我在这儿也标一下吧,这个关系是什么呢?叫做关联关系啊,关联关联关系。啊,叫做has a。还是饿?好了。我这个保存一下各位啊,叫做集合的集成结构。集合的。继承结构图。
19:00
那么接下来呢,咱们继续再往下,Collection下面有很多,主要它有两个分支,各位啊,我们看看一下,呃,找一找啊Java u下1C打头的collection collection下边呢,它所有已知的子接口很多,你看见了吗。我们重点看一看这个list和这个各位。这个list和set啊。这都是接口,各位啊,List它是个接口,然后呢,Set呢,它也是一个什么呀接口啊,在这里呢,我在图上给大家画一下来画接口的话,应该是在这个叫做class这边有个接口是不是,哎,这是个接口,这个接口是一个什么呀?List的接口。然后呢?它还有个接口叫什么呀,叫set接口啊,那么这个接口和这个接口的一个关系属于继承关系,那继承关系泛化关系的话,应该是空心箭头指向负应该是他。是不是,哎,应该是他。对吧,哎,是这样的,那么接下来我们也可以把它搞一搞,点右键这个地方format啊,位置不太好找,在这呢,是不是显示出来这是接口,然后这块呢,Format啊,然后接下来这个显示位置,我们用一下这个啊decoration啊接口。
20:14
看它的关系啊,List。那么有同老师这个collection里边有什么方法,那这里边方法多了去了,你如果说把这个collection方法都写上去,那这个也不太现实啊,不太现实。来,你看。是不是里边有什么方案你看多了,ADD呀,ADD all啊,Clear啊,Contains啊,是不是contains all啊,Equals code是不是ER,你看这个ER这个方法就是从负接口里边继承过来的,我们集合对象collection只要调我们这个ER这个方法就可以返回一个迭代器,我们拿到这个迭代器的目的是用来通过迭代器干什么呀?去迭代便利集合中的元素嘛,这是remove删除元素的。是不是这size是用来获取我们这个元素的对吧?哎,获取我们这个元素的个数的啊,To away转成数组对不对?哎,这都是我们collection这个接口里面的方法,听懂了吧,里接口的方法啊,就在这块呢,你愿意加的话,你可以加上去对吧,你加一个方法就是方法attribu属性方。
21:21
对,这是方法啊,你可以加上去来。咱呢在这就不加了,各位啊,不加了,那么这个list里边它有什么样的方法呢?或者说list集合存储元素的特点是什么,我给大家总结一下啊。来在这呢,我们加上一个注释。那是这样的list集合存储元素特点。有序,可重复。啊,有序可重复。存储的元素有下标。啊,存储的元素。
22:03
有下标。明白吧,这就是粒子的集合,存储元素的特点。往那拖一下。啊,这个。那例子的集合是有序可重复,有序就是你存进去的顺序和取出的顺序是一样的。啊,我在这写一下有序啊。有序实际上是说存进去。是这个顺序。取出来还是这个顺序。啊,这里的顺序不是。不是说按照大小排序啊。不是说按照大小排序的意思。List的集合存储元素有序,可重复有序,实际上说的是存进去是这个顺序,取出来还是这个顺序,这里的顺序不是说按照大小排序啊,不是这个意思。
23:09
就假如说你这个list集合,它存储这是list集合,你存的时候,你先存一个张三,再存李四,再存王五。对吧,你存张三对不对?哎,你存什么呀,叫李四,你存这个王五,那么接下来你取出来这个顺序,你还是先取出来谁呀,张三再取李四再取王五。你存进去这个顺序和你出的这个顺序是一样的,这叫有序啊,有序各位它不是按照大小顺序排序啊,是有序。另外最主要有序,我觉得就是下标,这是零,这是谁呀?这是一,这是什么呀?哎,这是二,所以这叫有序。所以说有序也可以体现在下标上,各位啊,有序实际上是说去这个顺序还是个顺序。
24:01
有戏?啊,是因为什么呀,List的集合都有下标。啊,都有下标,下标从。零开始。一地。啊,以一递增,这是说历史的集合。S集合对了,可重复是什么意思?可重复就是说假如说你这里有一个集合,这个集合里边,你假如说往里边存了一个。一你还想再存一个一,再存个一没问题,历史的积分能能重复?能重复各位啊,有序可重复嘛,这是它的一个特点啊,有序可重复,那例set集合正好和list集合是什么呀,是相对的。那我们这个S集合它的特点是什么呢?是无需不可重复。啊,集合。
25:04
存储元素特点是无序、不可重复。无序表示存进去是这个顺序。取出来就不一定是这个顺序了。另外,S集合中元素没有下标。没有下标啊。哎,S集合中的元素还不能什么重复啊,不能重复。这是我们set集合的一个特点,各位啊,它是无序不可重复,这是有序可重复,有序可重复体现在存进顺序和取出顺序一样有下标,而这个呢,是无需不可重复,里边没有下标,存进去这个顺序取出来是另外一个顺序的。啊,然后这个集合里元素还不能重复啊,这是我们list集合set,有的老师咱们除了这个list和set之外,还有没有别的呢?哎,当然有,你看这个结构图当中,你看看这个collection下边除了这个list对吧?除了这个set之外,是不是还有queen队列?
26:13
是不是,哎,还有一些别的对吧,啊还有一些别的。是不是,哎,那还有很多其他的,但是这里最主要掌握的就是list和set。在我们的一个结构图上是这样一个图,各位啊,这样一个图。我说你画出来之后,你好记啊好记啊来,那另外这个是不是就泛化关系啊。是不是泛化呀?是不是,哎放放高筋,那这个呢。是不是也是泛化呀。是吧,哎,放缓关系啊is a继承关系,放缓关系1A关联关系孩子。啊,空气箭头指向负,我们到现在为止一个类都没讲,各位大家看,摆在你面前全是一套接口,Collectionable,这个是用来迭代集合的,通过这个对象调用这个方法。
27:11
来拿到它的迭代器,拿到迭代器之后,通过这个方法,这个方法这个方法完成集合,这个集合中元素的迭代,然后这是list,这是啊list set。没事儿啊,咱们捡重点去学。
我来说两句