00:00
好,那么这呢,我们把这个集合框架呢,就算是说完了,那么接下来我们再要讲的话呢,就按照这个顺序,咱们呢先去讲这个collection,把这个讲完以后呢,我们再去讲这个map,嗯,那这一章的主体就讲完了,后边呢,再稍微提一下操作集合的一个工具类,叫collections啊,到最后呢,我们再来讲,那么这块的话呢,我们就先来讲这个单列集合,那单列集合的话呢,涉及到list和set这块呢,我们也先不着急去说,我们先来说说collection。说collection是接口有啥可说的呢?啊,这就像我们讲object一样啊,我们也讲过object啊,之所以讲它呢,是因为所有的类呢都寄承于它,在它当中呢,就会定义一些通用的方法和功能,我们就看通用的都有哪些,那么对于list set也讲,呃来讲它俩呢都实现了collection接口,那么在存储单列数据方面,不管你是有序的也好,无序的也好,其实也会有一些通用的操作,那既然是适合于你list,又适合于set呢,这些通用的操作呢,自然而然就会定义在我们collection当中,那下边呢,我们主要关心的就是在这个collection当中都定义了哪些功能,那一呢,我们就来谈一谈这个collection这个接口中的API。
01:13
哎,接口中API,那么对于这个接口来讲啊,咱们都知道接口中呢,要定义变量啊,定义属性也只能是常量了啊,那这对这个接口来讲没有太大意义了,所以咱们主要关心的是这个collection接口中的方法啊,它的一个使用啊,那首先呢,来看一下,我们这个叫collection往下走。嗯,这呢,就是它里边定义的这些方法,这些方法的话呢,在我们这个JDK8的时候呢,其实也会涉及到一些更新,比如说像这个default。咱们讲接口的时候呢,说这D8当中接口可以定义默认方法是吧,这不default方法嘛,哎,暂时呢,关于这个default又涉及到这个string API了,呃,这个是咱们后边讲张二八的一些这个单独最后呢讲一张新特性的时候呢,提到的一个结构,所以暂时呢把这些呢,我们先过滤掉,咱们暂时先关注一下它里边的抽象方法,那这个抽象方法呢,那就是意味着是八之前的啊,最早有我们这个collection的时候呢,就定义的一些功能啊,那么这个功能呢,我们看看都有哪些。
02:21
那么咱们既然是一个存储数据的一个容器了,那就会涉及到一些操作。嗯,对,这块呢,很自然而然的,我们就会想到呢,就是增删改查一些数据的操作了。啊,也就是说大家呢,如果去造一个容器,那你也得去提供这些方法,看看都有哪些啊,添加一个元素。嗯,添加这一个一个的元素啊,这呢我添加呢,可以添加好多,那好多这个元素呢,就在又在另外一个集合当中,就相当于把这个集合当中元素是不是都填到你调这个方法的集合里啊。哎,对的,哎,Clear啊,Contains contains all啊,ES code等等等等,往下一数,这块呢是有15个方法。
03:04
这我都数过了啊,哎,15个方法啊,这15个方法里边的话呢,哎,这个呢,稍微特别一点啊,因为涉及到我们讲的这个泛型了啊,哎,这个呢,我们也暂时可以先不用泛型,除了它之外呢,有14个,那么接下来这14个方法我们都讲一讲,哎,我们很少说讲一个API呢,把它的所有方法都讲了,包括string咱们也没这样做啊,那这里边的话呢,这些方法确实呢,哎,比较常用啊,那有有必要呢,咱们去都讲一讲,所以这块呢,我就开始来写这个啊测试。哎,TEST1。哎,这呢,我们就一波一波的来说啊,那首先的话呢,你去测试这个方法,这个方法呢,说实话你咋测呀,它是抽象的,那咱们只能是拿它的一个实现类来测试了,所以我这块呢,呃,声明的话呢,我先写成一个叫collection,嗯,声明一个collection,然后我这呢叫CL,诶右边这块呢,我new的时候呢,嗯,你不能去new collection了,我这块呢,拿谁呢,我暂且拿这个a list去充当一下。
04:14
哎,CTRLC,哎这样来写,或者换句话说呢,咱们下边测的这个方法的实际执行是不是都是人家里的,哎,是的啊,当然呢,通过这个里边我们也能够说明你这个里边方法是做什么用的。那因为呢,我们接口中定义的方法呢,抽象的嘛,它只有规范,这个规范呢是定死的,这个实验类重写也得遵循这种规范啊,所以我们说这个莱的方法呢,其实呃,这个方法的作用是什么,通过它呢就能够说清楚,虽然我们执行,虽然我们运行的是这个里边的啊,首先第一个方法我们提供一个叫I的方法啊,这个C点我们调一个I的,哎,我们看到这个参数呢,是object类型。
05:00
哎,这样一个元素,那有同学可能会说说,诶怎么在这看到的不是object类型的,是个E是吧,这呢是因为我们这呢,呃,用到了这个叫泛型了。暂时呢,大家先忽略这个泛型,那这块呢,凡是你下边你看到E的位置呢,都认为是object就可以了啊,就是这个意思啊哎,我呢可以去添加这个数据了,好,我添加一个AA。我呢可以添加好几个AABB,哎,我可以添个123,诶还能添个123。为什么对你看我这呢,添加的行参呢,是一个object,你123呢,基本数据类型能填进去啊,因为自动装箱了。好,这呢,我就1234添了四个元素,添了四个元素,那这块呢,我们就可以调第二个方法,这个我们叫做size方法,哎,我们直接呢s out一下,哎,Co点调一个size好执行。
06:08
这呢我们就一个四,哎就是我们这个长度呢,它就是一个四啊那这块呢,这个I就是将呃将我们这个参数呢E,将这个元素E添加到哎,咱们这个T和啊Co中,哎这个样子啊,那么size它呢,就是来获取这个添加的元素的个数,那yag呢,就是当我们一开始呢没有的时候接压。没有没有,就是连呗。哎,就是零啊乘这呢是我们说的这个,哎,这两个方法。那么这两个方法完了以后。啊,这个我们得导一下啊,那这时候我放的这个数据呢,可以是任何类型啊,因为都是object这个词类了,那么接着的话,我们还可以去测一个,哎,叫爱的奥,嗯,爱的奥看一下,嗯,C点我们第一个叫爱的奥。
07:12
我们呢,需要声明另外一个collection啊,把另外一个collection当中元素呢都填过来,那不妨呢,我这块呢,就再去造一个啊,CTRLCCTRLV,我这呢叫C啊,然后c1.2,咱们去做一个艾,那艾我写一个这个,比如456。啊,写一个A,嗯,写一个这个CC,就填这两个元素,接着的话呢,我们这呃去调一下这个CO1好,原来呢有四个元素,现在呢,我把这个集合当中的这两个元素呢,也加到咱们这个里边了。啊,那很显然,这手上就六个了。哎,没有问题,这就六个了。
08:01
六个啊,或者说你想看一下具体的元素的话呢,其实你看我直接呢,去输出一下咱们的CL,那你输出它其实相当于是不是掉toth润了,哎,其实这个twoth润不是它的,是不是就是我们这个具体的实现类里边那个重写的toth润了,其实也能够看到它里边这个数据了啊是不是,哎一个两个三个这块呢,是咱们用的这个date还比较长啊,还是456还有一个CC。这两个呢,是我们新加进来的,通过艾成,那这个呢,是里边又去传入一个叫collection,哎,这个咱们叫CL1了啊,这是将这个C1这个集合中的这个元素。元素添加到哎,咱们当前的哎这个集合中,这呢是我们说的这个第三个方法,那么在接下来啊,我们呢,还可以去演示一个叫做is empty,哎这个呢,通过这个名字就能够判断出来,对,判断当前哎集合是否为空,这个是为空,不是说你这个集合是不是no啊,说你这个C2号是不是no,不对,对是判断这个集合当中是否有元素。
09:28
杨呢,就是你的size的事是吧,哎,我们呢,直接去输出一下co.is啊empty。那这时候呢,它就是一个false,那我们打开这个empty,你看一下,那其实呢,就判断一下你里边这个size,咱们调size方法,其实你那size方法返回的就是size有几个元素,那空的前提就是说你这个size是零,嗯,一看源码非常清楚,这是这个叫empty,那在这个上面呢,我们可以再去调另外一个啊方法叫做clear。
10:08
对,就是清空集合元素。啊,那咱们比如说叫cu.clear这个clear呢,它可不是说把我们这个CU直接重新复制为no了啊,这个仍然是有这个对象的,只是说里边这个数据不要了,所以呢,我们在clear以后啊,你再去调我们的empty,不是说报控制帧了啊,人家还是有对象的啊,是里边元素没有了啊,所以这个判断它的empty呢,就是一个处啊,叫清空集合元素。好,这呢是我们列出来了,咱们关于collection这个接口中的这个一波方法,这呢我们罗列了五个方法。啊,那除了这五个之外呢,我们这块还有这个,呃,剩下的这个十个方法算是是吧,先把这个呢先停一下。
我来说两句