00:00
大家好,我是海波老师,我们接下来给大家继续讲解集合的相关语法,那么我们前面啊,把list set map接口呢都给大家讲了一下,我们接下来呢,准备给大家讲讲我们Java中集合的工具类,那我们这里来拷贝一下来我写上一个12。然后呢,把这个去掉,我们叫做U。什么叫工具类呢?就意味着我们有一些我们Java所提供的一常用的一些集合的方法,我们可以采用工具类帮咱们直接实现,而不用我们自己去写了,这里我们给大家介绍一下,有一个叫A瑞这样的一个类,咱们找一下A瑞,诶就是它,那么这个类呢,提供了很多的方法,可以方便我们对集合呀,对宿主做操作,那么这里呢,我们就给大家介绍几个方法,让大家感受一下它的作用。那我们这里呢,首先我们来看看,既然是工具类啊,那么它里面的方法一般都是静态的,通过类名可以直接访问,所以点一下我们叫做to string,诶,同学们会发现我们这里啊,就可以把一些宿组呢,给它传进去,对不对,OK,咱们来写上它,咱们叫做int is等于大括号,然后呢,我们写上叫12345好了,写完了以后我们叫to string,把这个is放进去,诶这个玩意有什么用啊,不就把一个对象变成植物串吗?我们来看看到底有什么用,我们这里啊给大家打印一下。
01:17
打印完了以后,我们下面呢,直接打印,咱不用它了,咱们直接is看看两个有什么区别,这个呢是直接变成字符串,这个呢是通过图使string方法变成支符串,我们来看看到底有什么区别啊来。运行以后,大家有没有发现我们下面的这种方式,直接将一个数组对象变成字符串,你根本就看不懂,而且这也恰恰不是我们想要的方式,他把我们所谓的那个哈希code的内存地址,你说你打印出来,咱们看它有什么用呢?我恰恰可能想看一看我当前数组中的元素,你看这不很方便吗?所以这个方法还是比较不错的,好,咱们再来。这是我们的第一个,咱们再来给大家写上一个叫ari,好了,点一下,点完了以后大家会发现我们当前还有一个这个方法叫at least,我们点开,点完了以后,它里面传什么呢?叫可变参数,大家还记得吗?我们前面给大家讲过一个叫可变参数,就意味着我在里面写上它叫12345,你写完了以后点一下叫VR回车。
02:19
回车以后,你会发现它自动就得到了一个历史的集合,那这样的话对于我们来讲不就非常的方便了嘛,对不对?同学们,所以下有的时候呢,我们可以想办法获取到我们不同数据的集合,这个也是非常不错的,你像咱们之前啊,咱们的宿主呢,都是用这种方式,对吧?那现在集合呢,也可以采用类似的方式,你说这不挺好吗?构建集合的时候,同时把数据传进去还是不错的啊好了,我们接下来再给大家讲一个叫A。我们点叫salt这个sortt呢,顾名思义啊,它叫排序呀,所以我们写上咱们叫排序,那排序的话,诶,那把咱们这个数组,我是不是可以把它变一下呢,我们写上它啊,三逗号五逗号二逗号一逗号四,哎,我的数据是这个样子的,我想给它排个顺序,默认。
03:08
默认为声序,诶好了,把我当前的这个RS我们直接放进去好了,现在呢,我们去打印一下,那么打印的时候呢,我就直接看这个结果了,所以把这个我们拷贝一下,咱们放过来,放过来以后我运行一下看结果,那这时候你会发现我们当前的这个数度呢,应该排成了12345,诶你会发现多方便呢,对不对,有的时候就不用咱们排序了,咱们之前不还讲过什么宿主的什么冒泡排序,什么选择排序吗?我们这里不用了,直接帮你就把它排好了,你说这不挺好的嘛,对不对,诶就是这样的啊好了,那这个没问题了,以后我们再给大家看点别的,比方说我们前面讲完排序以后,还讲过宿主的一个查找功能,叫二分查找法呀,所以我们这里呢,就给大家讲一讲我们的二分查找法,所以呢,我来写上它,咱们叫A点一下有一个叫什么呢?叫boundary search。什么意思啊,同学们,就是二进制的查询的意思,就叫二分查找法,那我现在呢,就把我们当前的这个叫做什么呢?Is我就传过来就可以了,传完了以后,我这边呢,想给它取得五,我想知道五的位置在哪里,所以我们这里给它来打印一下,打印以后告诉大家这个b research就返回五在我们当前数组中的位置,哎,就是这个意思,所以呢,我们运行一下,看结果运行。
04:26
运行以后,我们看看那个五的位置。哎,是四,嗯,不对啊,我们这个五明显不是我们的零一吗?他怎么是我们的四呢?大家还记得吗?我们讲过一件事情,我们的二分查找法,记住二分查找法它的前提条件是不是排序后的速度啊。没错,同学们,如果你的数据没有顺序的话,你拿我们的二分查找法是没有用的,而我恰恰巧了,刚才不是恰恰已经排过顺序了吗?所以说你排完序以后,它的结果变成了什么?变成了我们的12345,所以呢,你取五的位置,那不就是01234没问题吧?同学们,二分查找法咱们就讲到这儿了,我们接下来再给大家讲一个叫数组的比较。
05:14
数组的比较,什么叫数组的比较呢?我们这里再准备一个数组,我们写上12345好了,写完了之后呢,我就来判断一下,咱们叫A瑞十,它有一个方法叫equals,这个方法呢,就传两个数组就可以了,所以把我们当前的这个is我们传进来,然后再给他一个叫RS1就行了,那这样的话我打印一下,诶老师,那这两个话是不是不相等啊。它如果不相等的话,所以我运行一下,看结果运行,运行以后大家就会发现我们当前诶相等哦,老师我明白了,当前的这个数组啊,12345,这个是35214,那么它们的元素是相等的对不对?不考虑它们的位置对不对?哎,其实不是的,为什么?因为你刚才不是有个sot吗?你把咱们这个数组干嘛呀,你排了个顺序,不就是12345了吗?它恰恰跟它是相等的吗?所以大家不要误会,我这里的相等恰恰是跟位置相关的,相同的位置如果每个值相等,那就正确了,那咱们举个例子吧,咱们把这个呢,咱们再来一个,我写上一个二。
06:22
然后呢,我中间我改上一个六,那好我们叫做二,我判断这两个速度相不相等,记住别的都一样,就是我们的这个六和三不一样,所以我运行。运行以后看结果,你会发现它的结果就是false,诶老师啊,那如果我们12345都没问题,但是我多增加个六呢。我们的这个数组多了个元素,它少了一个,那么别的都一样啊,我们来运行一下看结果,运行以后看结果之后大家看一看,你看它也是false老师,那你看前面的五个是相等的呀,我如果现在就想比较数组中的前五个行不行呢?其实是可以的,那么就意味着你需要把我们的范围告诉他,比方说我这个数度你从哪到哪,我们写上一个零逗号五,对吧,你这么写就告诉你,我的这个数度当中我们取前五个,那同样道理,这个呢,我们也要写上一个逗号,零逗号五,你这么写就可以了。好,我们运行一下看结果,你会发现这个是没有问题的。
07:23
同学们啊,我相信啊,就这些方法让你自己来实现这些功能,现在可能也能实现,但是呢,咱们Java中的集合已经帮你实现了,你还有必要自己写吗?当然没有了,对不对?所以啊,咱们这个工具类呢,就给大家介绍到这里,如果大家感兴趣的话,可以调用它的一些其他方法,自己看一看,好了,咱们这个就说到这里。
我来说两句