2020
10-28
10-28
关于Java8中map()和flatMap()的一些事
两个方法的背景这两个方法看起来做着同样的事情,但实际上又有些不一样。看源码部分是这样的packagejava.util.stream;map()方法/***@param<R>Theelementtypeofthenewstream*@parammappera<ahref="package-summary.html#NonInterference"rel="externalnofollow"rel="externalnofollow">non-interfering</a>,*<ahref="package-summary.html#Statelessness"rel="externalnofollow"rel="externalnofollow"...
继续阅读 >
1、声明一个测试对象importjava.time.LocalDate;importjava.util.List;importlombok.Data;@DatapublicclassStudentInfo{//名称privateStringname;//性别true男false女privateBooleangender;//年龄privateIntegerage;//身高privateDoubleheight;//出生日期privateLocalDatebirthday;}2、添加一些测试数据//测试数据,请不要纠结数据的严谨性List<StudentInfo>studentList=newArra...
Java8的flatMap函数,作用是:如果有值,为其执行mapping函数返回Optional类型返回值,否则返回空Optional。见到的映射函数往往都只有一句话,连大括号都不需要加的,如下:StringpersonValue=Optional.ofNullable(map.get("person")).flatMap(value->Optional.of(value.toString().trim())).orElse("");可是如果映射函数里,可能会抛出异常,该怎么办?方法也是使用try/catch,但是一定要有返回值return,返回值类型...
业务场景:调用同步接口获取当前全部有效账户,数据库已存在部分账户信息,因此需要筛选同步接口中已存在本地的帐户。调用接口获取的数据集合List<AccountVo>list=response.getData().getItems();本地查询出来的账户集合List<Account>towList=accountRepository.findAll();筛选差集代码List<AccountVo>distinctByUniqueList=list.stream().filter(item->!towList.stream().map(e->e.getOwnerId()).collect(Collect...
一、方法引用java8允许我们使用lambda表达式创建匿名方法。但有时lambda表达式除了调用现有方法之外什么也不做。在这些情况下,通过名称引用现有的方法,通常能更直白的表现出方法的调用过程。对于已经存在的且具有方法名称的方法,它其实是简洁且易于读取的一种lambda表达式,或者说是对lambda表达式的一种进一步简化。现在我们来看看下面这个“person”类:publicclassPerson{publicenumSex{MALE,FEMALE}String...
javalambda循环对于每个经常需要在Java8(或更高版本)中使用多维数组的人来说,这只是一个快速技巧。在这种情况下,您可能经常会以类似于以下代码的结尾:float[][]values=...for(inti=0;i<values.length;i++){for(intk=0;k<values[i].length;k++){floatvalue=values[i][k];//dosomethingwithi,kandvalue}}如果幸运的话,可以用for-each循环替换循环。但是,循环内的计算通常需要索引。在...