00:00
还有难点,难点在哪?难点就在于我们这个什么封装的这个方法,就这个方法,这个方法当中你会发现,你会发现里面没有跟某一个具体的类型有关系。没有吧,他没有说U的才能用吧,也没有说我们的EP才能用,对不对,没有,他这里面恰恰用的是什么东西啊,泛型啊,你只要把泛型把类型约束好了,那么在我当前的场合下,我们的程序就更具备通用性了,否则你固定写死的话,那就不具备通用性,那可能转换类型这方面就非常的麻烦,所以啊,我们这里用到了一个泛型的约束,像你们以前学泛型是不是都是在我们的什么,是不是在我们上面写啊,那现在可能就得在我们方法这写了,为什么呢?只对这一个方法起作用,别的方法没这个事儿啊,没这个事儿,所以啊,我们泛型的用法呢,你要考虑清楚啊,所以啊,我们这里咱们说一下还有一个是什么呢?就是我们文件留了这一块,这个我相信你们之前是学过的,对吗?但是如果长时间不用,你们可能印象也就不深了啊,所以下来呢,把这些最基本的留的操作一定要知道,因为我们现在总是说叫流式数据处理。
01:14
啊,都跟流有关系,但是可能跟这个有点差别,但是含义上都是一样的,都是要对数据做处理,做操作啊,那么接下来还有一个地方是什么东西啊,就是反射了,这个反射了,咱们这里用的反射是非常简单的,我们后面会给大家再增加点难度啊,这个反射是比较简单直接,我的类型之间加了一个叫new test,就什么哎,就得到了我的对象啊,所以这个没有任何的问题,然后呢,我为了保证我的数据能够拿到,我还增加了一个date调用了它的方法,它里面有个叫set value的方法,那么在这个时候呢,我们重写它的那个方法,在这里我们重写的那个叫做set value方法,我自己来解析我文件的规则,你不用管,你只要把数据给我,我自己来解析,哪个数据是我的电话号码,哪个数据是我的名称,我自己来定,不用你管,这样的话也是非常不错的啊,降低他们之间的耦合性,否则你把整个。
02:14
逻辑写在一块儿也不是很好啊,我们为了实现我们自己的扩展性,咱们就这么来做了啊,所以只要把这几块呢,给他了解清楚了,我相信啊,咱们这个输入应该是没有问题的啊,好了,那输入没有问题,那你下面可就开始要干嘛呀,做后续的这些业务逻辑操作了,这个咱们就不要了,反正数据咱们现在已经有了,那么有了的情况下,咱们开始要实现我们的业务逻辑处理了啊好,那这个没问题,那咱们接着呢,往下,往下是什么呀?从通讯录当中随机查找两个电话号码,要从它里面随机找两个,记住这有隐藏的一个条件,什么条件呢?这两个电话号码能一样吗?不能一样,对不对啊,两个一定不能一样,你不能说我随机找,诶,两个要那绝对不行,所以在这里呢,我首先要去随机取数据了,我先写个int。
03:15
我写个T,我写个什么int呢?我们叫做1INDEX。啥意思呀?号一表示的是第一个电话号码的索引吧,你要从集合里面取数据,为了快速查询,咱们是不是应该通过索引的方式去查对吧?那这个索引的方式查,我就先把第一个取到对吧?哎,我举个例子是个零啊,咱们举个例子啊,那我是不是应该干嘛呀,是不是应该在查第二个索引啊,是不是他呀,那我是应该判断判断什么东西啊,判断这两个相不相等吧,对不对,也就说我判断这两个相不相等,如果什么,大家想想,如果你相等的情况下,那其实后面是没有意义去做的,对吗?对不对?所以两个如果相等的情况下,那是不对的,你是不是应该再去随机取去啊,哎,所以啊,我们应该有这样的判断,所以我们现在的逻辑非常的简单,就是随机取两个数,而这两个数呢,恰恰是两个索引,只要索引不一样,我认为你的两个电话号码就不可能一样,那当然我得问,我得有前提的,什么前提啊。当然这里的电。
04:21
括号码没有重复的吧,对吧,这里不能有重复的,这里没有重复你所引那也没有意义啊,所以我现在呢,我们暂时就先把第一个号码给它随机出来,那我怎么随机啊,我new我的,然后呢,我们点,那咱们点这个点咱时先不用啊来把这个先导进来,嗯,然后呢,我们点这个点我们叫next in,然后我们这里这么来,我们叫做点我们的。这个方法你们用过吗?我这个。
05:08
啊,这两个有什么区别,记住啊,就是我们这两个东西啊,记住啊,它们的类型是不一样的,一个是我们的int,一个这边呢,返回的结果应该是个什么东西啊,是个double啊,是个double,从我们的数据的一个类型来讲是不一样的,一个是浮点类型的啊,一个是我们整数类型的啊除了这个不一样以外,还有一个地方有问题,我们的这种方式是可能什么呢?有规律的,你能猜出来它的随机数是多少,这个你就猜不出来啊,就这个东西,那那为什么说能拆出来呢?给大家简单的演示一下啊来,嗯,我想想在哪演示呢?就在我的producer里面吧,嗯,在这里面呢,我们创建一个new啊,我创建一个叫做它,我们叫做test,嗯,点击OK,点击以后在这里呢,我们来写上我们的嫩方法,然后怎么办呢?
06:08
简单同学们看啊,我们写上叫那等于new,我们叫R,嗯,然后给个十,这个十是什么呢?是个种子啊,是个种子,然后呢,我们这里呢,给了个负循环啊负循环,然后呢,我们int I啊,等于我们的零,然后呢,I小于啊,我们写上小于等于小于半,小于十啊好了,我现在呢,把这个数呢,我要生成一下,我们叫做red。点叫next int,然后呢,我写个十啊,这什么意思呀,随机生成十个数字吧,哎,这个十个数字呢,它在零到十的范围之中,包含零,但是不包含十啊是这么个意思,好咱们看啊,我现在这么写完了以后,我把这行代码我是原封不动拷贝,我拷贝以后干嘛呢?我把这加个一,我把这加个一。
07:05
你会发现是不是两个不同的随机数啊,对不对,但是它一样的是什么呢?都是随机十次吧,所以我为了什么呢,把它区分一下,我还跟别的地儿区分了,我在中间我加一个分割符啊,所谓的分割符呢,就是一大串的字符串给它分开好,它的前面是我的第一次随机十个数,下面呢是我第二次随机十个数,你运行一下看看它结果。你看看他的结果是什么样子的,你会发现他一模一样。3030667814 3030667814,所以说你会发现这么写是不是就有规律啊,我说了我能猜出来它对吗?我能猜得出来,为什么能猜得出来,因为它有规律,我看我只要我能知道这个东西,记住恰恰是因为种子相同,种子相同的情况下,它的随机数就一定有规律啊,所以这个数如果被别人知道了,那就麻烦了啊,所以说就这么回事儿,那我刚才这个地方好像没有传呢,咱们刚才这个程序当中没有传吧,你没有传它也有种子,它的种子是什么呢?是当前的系统时间,说的简单点就是我们system点什么那个东西啊,就是它了,所以啊,这是我们它的情况,所以大家想想,那如果我能够知道你当前的系统时间,你在什么时候执行的那个地方的话,它的规律能不能找到,能吧,哎就是这样,所以我们总说啊买那个什么,买彩票吧,买双。
08:38
有款随机的是不是,但是你要记住,可能不见得是随机的啊,不见得是随机的对吧?哎,就这样,而且就是买那个彩票双色球是不是也是也做假的,之前2017年的时候是不爆出来了干嘛呢?那个球他从他的那个箱子后面怎么了?塞进去的啊,就是这样,你在那个电视上你看不到是吧,后面有个人往里面塞球是吧?塞球啊就是这样,所以说你没人买彩票吧,没人买彩票就不要买了是吧,那就弄虚作假的是吧,都是假的啊,所以咱们现在的这个地方记住啊,我们这么写是可以的,诶老师,那这么有问题的话,那难道这个math点就没问题了吗?我们的math点咱们可以来点一下,点点完之后你会看一看它到底是什么样子的。
09:25
它的源码当中是这个样子的,那这记住next double和next int没有直观的区别,没有说就是说啊,这个随机数不一样,只不过是类型不一样嘛,一个是浮点,一个是整形,对不对,关键点看什么,关键点看这。关键点是看这个,为什么要看这个呢?因为看看它是怎么回事,那么这里一看就是麦当中的一个内部类吧,内部类当中会有东西,所以我别的不用管它,我就看它就行了,所以我点点完以后就马上看到这儿。那你看到这儿,其实你想都不用想,它一定跟我刚才的代码是完全相同的,只不过它掉的是next double对吗?所以说你这么写是不是等同于new.next double啊,但是因为你是封装好的,所以我每次的调用的时间点是不一样的,你不像这个,这是写在源码当中的,源码当中这个是可能会被获取到的啊,你被获取到的话,你这个时间就会有问题啊,那这样的话就不合适了,所以在你们实际的工作当中,如果能用它就尽量使用它,我这里为了简单就直接用了一个什么不,那个调用了一个叫next in,它没有吧,它是个W类型的吧,但是也可以变成int吧,也能变啊,但是我为了简单我就没有变啊,所以我们这个就不管了啊,好,所以我这个呢是没有问题的。
10:48
那然后呢,我接下来我该怎么做,第一个我已经得到了。那然后该怎么做。我是该得第二个了,但第二个得你可要记住它应该是什么,它应该是随机得,也就意味着应该不是说只随机一次吧,所以说这地方大家看啊,你把这个地方来,我们最好是干嘛呢?写个叫well to什么意思啊,就意味着不是说只读一次,因为你读一次它恰恰怎么了,他恰恰可能是相等了,对吗?那所以把这个呢,我放到外面去,那我放到外面去,我放到外面去以后干嘛呢?它等于它等于什么?等于这个行不行,可以吧,我这么写完是没有任何的问题,但是恰恰有可能是相等了,对吗?哎,所以我们来给它放进去,如果你相等了,你该怎么办?你是不是应该继续去取去啊,对不对?但是你什么时候就不用再取了,你不相等的时候,你就不用再取了,对吗?那这种。
11:56
该怎么写啊,是不应该跳出循环了啊,哎,所以我break,只要你不等,我就break你相等,你给我再取一遍啊,再给我取一遍,哎,就这样保证呢,两个什么呢,不相等,两个如果不相等的情况下,那在我下面记住只要程序走到下面这个位置,是不是两个一定不相等,那两个一定不相等,那不就好办了吗?这两个对象我们不就有了吗?叫号一,号一等于什么?号一是不是就等于从这个集合里面,咱们点啊get吧,把这个index给它拿过来,对吗?诶拿过来,然后呢,再写上一个啊咱们来,咱们叫泡二等于再把这个呢给它拿过来拷贝,拷贝以后再把它咱们拿到这里就可以了,拿过来以后,那在我什么这个位置,主教和被教的这个电话号码我就取到了,那他取到了以后再走后面的不就可以了吗?所以我们首先把这个电话号码咱们。
12:56
间渠道啊。
我来说两句