一、lambda
()->{}
()中为接口唯一方法中的参数,可以任意取
{}为接口唯一方法中的执行语句,返回的结果类型必须符合接口中方法返回值的定义
原理理解:
Public interface Printable{
String print(String suffix);}
在函数式编程中有一个方法来找到这个字符串(前提是接口中只有一个抽象方法,称为泛函),即一个注解(@Functionallnterace),在通常情况下在调用时如果接口满足泛函,即使不显示的标识这个汪解,也会发挥作用;但如果我们在编与一个接口时显示标注此汪解,那么在定义超过一个抽象方法时,编辑器会报错
static void printThing (Printable thing){
thing print();}
理解:当我们通过printThin()方法去调用实现了Printable的类的print方法时,需要先定义一个实现了Printable 的类,重写print方法,然后new出这个类,传入printThing()方法中,从而获取结果优化:使用lambda允许我们直接传递一个方法的实现作为可打印参数
使用实例:
// 代码作为参数,直接传递具体实现
Printable lambdaPrintable = (s)> “MEOW” +s;
printThing(lambdaPrintable);
二、future
将任务提交给future去异步处理,然后获取结果
boolean.isDone()提供方法查询任务的执行情况
V.get()等待任务执行结束,然后获取结果
三、stream
1、什么是stream流:
类似一个迭代器,只能遍历一次,在流的过程中对元素执行操作,如过滤或者符合某个条件
2、数据源(数組成集合)
每次操作后返回一个新的流对象,方便进行链式操作,但原有的流对象不变
3、创建流
.stream()
4、操作流:
4.1过滤
.filte()
将流中的元素作为lambda表达式中的参数,执行箭头后的逻辑
例如:
list.stream().filter/element->element.cantains("王"));
就会得到包含王的元素数组的流
4.2映射
将流中的元素转化为新的流中的元素
.map()
例如:
list.stream().map(String:length);
得到流中元素的个数的数组的流
5、转换流
.collect()
例如:
list.stream().map(String:length).collect(Collectors.tolist();
得到一个新的个数的list
6、流转map时键冲突处理
Map<String,MultipleClientNoMap>multiMap=multipleClientNoMaps.stream().collect(Collectors.toMap(m1-> m1.getCurrClientNo(),m2->m2,(v1,v2)->v2));
理解:
m1-> m1.getCurrClientNo()作为map的键
m2->m2作为map的值
(v1,v2)->v2:键冲突时保留原始的值
7、.findAny()
.findAny()
.orElse(StringUtils.EMPTY);
理解:
.findAny()用于查找任意一个元素井返回optional对象
如果流为空,则返回一个空optional对象
15-20230609
.orElse(StringUtils.EMPTY);用于获取Optional对象中的值,如果optional对象为空,则返回指定的默认值,这里返回一个空宇符串""
8、.groupingby()
根据属性进行分组
结合filter从分组结果中排除某些条目
配合mapping
四、Object…
可变个数的形参,允许一切继承Object的对象作为参数
五、indexOf()
indexOf(string str):返回指定字符str在字符串中(方法调用者) 第一次出现处的起始索引,如果此字符串中没有这样的字符,则返回-1。
indexOf(string str, int index):返回从 index 位置开始查找指定字符str在字符串中第一次出现处的起始索引,如果此字符串中没有这样的字符,则返回-1。
使用实例:
historyCoverage.getFullName.indexOf("安全")<0;
表示不包含“安全”这个司
六、SQL
6.1 count函数
用法:
# 查询符合条件的某列一共有多少行数据
select count(列名)from 表名 where 列名=#{字段名};
# 查询某表的总行数
select count(*) from 表名;
# 查询某列不同值的数目(相同的记为一个)
select count(distinct 列名)from 表名;
使用案例:
<select id="getSigniClaimRecord" parameterType="String" resultType="integer">select count('Y') from event_info elwhere exists (select 1 from claim_apply_cause cacwhere cac.claim_cause = '09' and cac.register_no = e1.regsno)and e1.case_state in ('10', '13', '14')and el.clientno = #{clientNo, jdbcType=VARCHAR}
</select>
count(‘Y’),表示统计满足条件的行数,但是并不关心具体的列或字段。'Y’是一个任意的字符串常量,作为参数传递给COUNT函数,它的实际值并不影响计数的结果。
6.2 select 1
select 1 from 表示如果返回结果为空,则表示条件不满足;如果返回结果为1,则表示条件满足。
七、 final类型的属性值可以改吗
final 修饰的引用类型属性本身是不可改变的,但是它所引用的对象的状态可以改变。
八 、bitset
使用位来存储Boolean信息,0表示假,1表示真
用法:
九、Optional.ofNullable()
作用:解决空值判断问题,避免空值(null)显示判断,避免空值导致的空指针问题
//if判断:判断好多层int count1 = 1;if(testDemo != null){if(testDemo.getCount() != null){count1 = testDemo.getCount();}}System.out.println(count1);//三目运算符:嵌套层数深,可读性不好int count2 = testDemo != null ? (testDemo.getCount() != null ? testDemo.getCount() : 1) : 1;System.out.println(count2);//Java8-Optional:优雅,可读性较好int count3 = Optional.ofNullable(testDemo).map(item -> item.getCount()).orElse(1);System.out.println(count3);