青训营*豆包MarsCode 刷题日志 | 豆包MarsCode AI 刷题

83 阅读2分钟

小s倒索排序的刷题领悟

题目如下:

image.png

题目解析:

此题精华如下:在两个存入list表的数据中,取出他们相同的部分,即交集,再按照从大到小排序,存入一个list表中并输出,难点便在于list表的排序输出。

解题代码如下:

image.png 遇到的困难:

这里首先对传入的a,b表进行遍历比对,最后将相等的值传入新表中,我所遇到的阻碍便是如何对他们进行排序,本来我想的是将for循环的条件进行更改,如:for(int i = a.size();i >= 0;i--)从而使得数组从最大的那一边进行对比,但考虑到实用度不高,当排序的规则改变无法适用,便取消了这个想法,最后通过学习,决定采用lambda表达式来进行排序。

知识总结:

知识总结主要针对这个lambda表达式,如c.sort()接收的是一个Comparator类型的参数,这是一个比较器的函数式接口,里面定义了一个抽象方法compare(T o1,T o2),而lambda表达式,可以实例化这个接口对象,即(n,m)->m-n这里的意思表示,compare方法的两个参数分别为n,m,而这个抽象函数的返回值是m-n,即按从大到小的顺序来完成比较器的排序,理论上可以创建一个比较器对象,再用匿名函数的方法来实例化这个比较器对象,而lambda表达式可以让代码更加简单,仅仅只有一行,便实现了接口方法的定义与对象的实例化,使得代码更加简洁!lambda表达式的出现,使得java使用起来更加高级与便捷,java同时也自建了接口给lambda使用,使得lambda表达式的功能更加强大。

学习计划: 在做题的同时,关注自己不理解的知识,并考虑多种解决方法,提高自己解题的能力,比如这里我可以使用for循环直接按顺序存储,也可以实例化对象实现comparable的接口,从而定义排序方法,更可以用lambda表达式来简化代码,更多的方法有待我们去探索,要善于使用AI,我便是通过AI来学习了Lambda表达式的一些基础用法与含义。

工具运用:

结合教科书与AI,以及网上的资源,如csdn来学习与巩固知识,例如我可以让AI多给我举一些lambda表达式的例子来加深我对它的理解与思考,从而在以后的工作中可以更好的使用它们。