00:00
好,那前面的话呢,我们讲了很多关于算法,关于数组相关的一些算法操作,那开发当中呢,我们对于数组呢,实际上用的呢,不算少啊,一方面呢,我们自己用,另外一方面呢,咱们在这个呃,集合当中呢,它底层掉的也是数组啊,是这样的一个情况啊,那么这里边儿呢,我们就提到,既然呢,数组的操作这么多啊,像反转呀,查找啊,排序啊等等的这个情况,每次要都我们自己去写的话呢,那还是挺辛苦的。就是咱们写的这些啊,那这里边呢,Java就给我们提供了一个工具类,诶这个工具类呢,就叫做aris啊,CTRLC,我们可以在API这块呢搜索一下,诶输入这个aris进来,哎,这就是一个YouTube下的一个class,诶它呢就是我们操作数组的一个工具类啊,一个工具类,呃,就是从这呢也说明个特点就是呃后边呢,咱们后续学习的时候呢,经常会看到某一个类加一个S这种啊,那就是一般呢都是操作这个结构的一个工具类了,哎,或者有的时候呢,叫一个什么YouTube。
01:06
哎,他哒他U啊,那也是一个工具类的意思啊好,那这个ari呢,是一个工具类里边呢,就提供了很多我们操作数组的一些方法。啊,那我们从这API的层面呢,也可以看看你往后拽,这都是方法啊,比如说啊,上来就来一个beary search,是不是二分查找啊,哎,就是咱们写的那个二分法,其实啊,就是我这是一个差形数组,你想找它,哎返回呢,它首次出现的一个缩引位置,哎,这就是这个二分法查找啊然后呢,还有很多其他的方法copy涉及到一个复制的问题。嗯,下边还有equals比较两个数组呢,是否相等的问题啊,费填充的问题等等等等,这些都是给我们现成的一些操作数组的方法。啊,那么回头呢,大家涉及到数组的操作的时候呢,你先考虑一下在aris当中是否有现成的结构可以让你调啊,如果有的话呢,就用不着我们去写了,那那这里边儿呢,有几个相对来讲常见的方法。
02:11
我们给大家呢演示一下啊,第一个叫做equals,哎,比较两个数组呢是否相等啊,我这呢列的是int型的,其实还有其他类型的啊,你在这里边看就可以了。呃,第二个呢叫做to string,输出数组的信息,第三个fill,呃,将指定的值填充到我们这个数组当中,Sortt排序,哎,这个b research2分查找,哎这样的好,我们来测试一下这里边的这些操作啊,这呢我们就去新建一个,哎,我这呢叫做AR,它的一个test。啊,这个我们说一下这个ari啊,嗯,准确的说它是我们java.u这个包下的一个类啊,是操作数组的工具类啊说里面定义了。
03:04
哎,定义了很多,哎操作这个数组的这个方法。哎,我们呢,可以直接来进行调用的,下面呢,我们来测试刚才提到的这几个。好,那现在把这里边儿的一个一个的,我们都给它粘过来啊。嗯。
04:02
好,首先呢,来看第一个这个呢叫EQUAL4,嗯,它的意思呢,就是判断两个数组呢是否相等。嗯,对,如果我们回头呢,需要用到这样的功能呢,咱们直接调这个瑞这个功能就行,用不着咱们自己去比了啊举个例子,我这呢定一个int性的数组,我以int型为例了,这个其实别的类型的也可以比,嗯,1234,然后我再定一个。那这个呢,我写成1324。这样,哎,我比较一下这两个数组是否相等,我就可以调瑞点,还有一个呢,叫E4,你看别的类型都行啊,我们现在其实用的是这个放int型的这个,哎,你放一下这个RE1,放一下这个RE2,哎,他呢,就告诉我们一个布尔型的值接收一下啊,这个叫is,你可以起个变量名是吧,看is equals输出一下。
05:00
嗯。哎,行来,我们执行这个结果是不是很显然啊。二。这个还不是很显然哈出啊false false吧,有同学可能想,诶,这不都是一二三都是这几个数吗?对,咱们一开始讲数组的时候说过,数组是不是要有顺序啊,哎,就是1234跟1324是不一样的啊。哎,这就是个force,那你说他怎么比的,就一个一个比的,所以这块呢,我们点下这ES,这不就能看源码吗?他不就这样写的吗。嗯,当然我们所说一个一个比它这块设计的是这样设计,就是让这个效率能更高一点啊,比一上来说你这俩地值,呃,这个等等,其实对于引用数据类型变量来讲,就是你俩地址值。啊,你俩地址一样,地址都一样了,是不是就不用再一个一个比了,你俩都指的是同一个对象,那能不一样啊是吧,这肯定是处啊,直接出去,那或者说你这俩里边有是no的,那就别比了,肯定是no,肯定是false了,如果这个都不满足了,在后边呢,我先取出来它的长度,然后呢,看看它的长度跟你的长度线一样不一样。
06:22
长度都不一样了,那就别比了,肯定false,哎,如果长度也一样了,然后咱们再从头开始到末尾,一个一个的比一下,如果一旦发现有一个不同了,那就出去了,直接是false,如果没有进去这个衣服,那就说明你俩真的是一样的,就是一个一个比啊,你看他写的源码是不是也不过如此啊。啊,你也可以写的是吧,然后呢,把这个上面写上你的名,谁写的是吧?啊这是我们说的第一个叫equals啊,然后第二个叫to string,这呢它的意思呢,就是输出数组信息。
07:06
哎,我们回头呢,想看数组信息呢,都自己去遍历,这个就用不着了啊,直接呢,你就哎我c out一下,在这里边呢,我就写上a race.to string,哎,你想便利谁,你就把谁扔进去,比如A21就给它放进去了,哎这时候呢,执行一下。啊,他就直接给你这样输出出来了,不用我们自己写for了,就啊他怎么写的,你是不是也会啊,他这呢用了一个字符串啊,就是string buffer了啊啊string build了啊,然后呢,一个一个往上去给大家拼啊,取出来一个放到这个字符串当中,取出来一个放在这个字符串当中。那就这样啊,哎,这个大家还没有见过,后边咱们讲讲常类的时候呢,String string buffer string builder会对比一下它们的区别啊。哎,下一个叫做F,将指定的值填充到数组当中。
08:08
嗯,比如说我们呢叫ari,然后呢,我这有一个叫few,把这个A21放进来,我这写一个十,哎写完了,写完以后呢,我们再去遍利一下,哎,我就直接out a to string,把我们这个A放进来。啊,这是一开始的,然后feel完以后看一下。哎,你看就全变成十了,对,就是替换啊,把原来这个数组中的每个元素呢,都替换成你这这个第二个参数这个十,所以这里边操作你看很简单啊,遍利一下附页值啊,就这样啊。好,这叫few,下面呢叫salt,通过这名字是不是也知道啥意思了,对,就是排序。
09:03
来排序啊,那排序我们的a race.sort一下,把我们的这个A2,嗯,A21不行了,我们来个A22吧。这呢是稍微还是有点乱序的啊,哎,我们给他排个序,哎,排完序以后呢,我们再去输出一下。点to string AR看一下。那这不就是从小到大排了,嗯,然后这个salt呢,点进来你看一下它底层是这样写的啊,这块呢叫do啊port,然后quick sortt就是这个双port啊,这块呢就是排序快排这块其实具体又有很多小的变化哈,你不用关注这儿了,主要看这。是不是底层就用的快排啊,哎,对啊,行,知道这个就行了啊,就是回头呢,咱们真正开发如果涉及到排序了,其实都直接用现成的一调就完了,不用咱们亲自去写,其实啊,再下一个呢,叫bary search2分查找。
10:07
啊,二分查找啊,这个我们再重新再定义一个数组吧,比如说啊,嗯,二分查找的前提呢,是一定要有序。咱们拿上午写的。拿他为例吧。Can。Aris这。这样。这个呢,叫三。Ari点我们叫bary search,把我们的AR3的放进去,然后呢,你想找谁?我想找一个210。哎,想找他,哎这呢,就能给我们返回一下,你这个在哪个位置了啊,直接接收一下,嗯这个,嗯这个你得这个你要详细点说,我们先先先打印一下看看啊。
11:00
嗯,我打印下这个index,嗯,显然呢,我们这个速度里边是有的。哎,找到了,这就是他的缩引位置是八,那我随便写一个啊211。就没有了。哎,你看它返回的就是一个负数,哎,就是嗯,具体这个负的是几,这个你得看一下这个源码怎么写的了啊,总而言之的话呢,就是说只要你返回的是一个负数,它肯定就是没找到。啊,其实这块呢,你可以这样的去做一个区分啊,就是说如果呢,我们这个index是大于等于零的啊,那就相当于是找到了啊else,哎,如果是一个负数就是没找到。啊,未找到。啊,就是这样个情况,哎,这就是未找到,哎这呢写成一个210,这就是找到的这个情况了啊那为什么这个是一个刚才是负十啊,哎,你这个点开看一下,哎,它又掉到这个,你再点开它实际上它是最后反的是这个数啊跟我们这个长度是有关系的。
12:09
详细的大家就不用去看了,哎,你就知道它是负的,那就是没找到哎就行,好这呢,咱们把这个叫A瑞工具类里边呢,这样的五个方法呢给大家,诶简单的过了一下哈,诶除了这些之外呢,还有很多其他的方法,这个后续如果大家需要用到了啊,你可以到我们这个A瑞S工具类里边呢来找,哎,看到它的相关的这个说明,你看哪个是你要的就行,基本上的话呢,可以建明之意的啊,Copy复制呗。啊,就这意思啊。行,那这个工具类呢,我们就说到这儿。
我来说两句