Stream API的实战案例

Stream API的实战案例

ps:我个人比较偏向于代码与实践向结合,所以在一些专业的术语方面也有些粗糙,
以下内容仅按照我个人的理解进行解释,如有其它更全面更好解释,请直接在下面进行评论,或私聊我,我将定时去检查跟正

Stream ApI的前提条件

  • 针对对象: 集合
    • 后序内容按照这个下述内容进行分析
      • 集合 :List uList
      • 对象:User[id, nm,age,sign]

StreamAPI 常用的方法

  • Stream: (个人理解)就是把一个集合转换成流对象

  • map: 集合的筛选条件,选取当前集合的那些内容

  • filter: 对集合中的内容进行一次条件判断,常和findFirst() 连用

  • findFirst(): 把集合中进行条件判断满足的内容获取处理,后序可以进一步筛选(map)

  • reduce: BigDecimal 数字的运算
    更多待续~
    后序添加—list.stream().map(Dto -> Dto.getXXXXVo().getXXX()).reduce(BigDecimal::add).get();

常用的流使用方法

  • 把一个List<对象> 从中取出特定的一些内容,返回一个新的list
* 筛选User的id    
uList.stream.map(User::User.getId()).collect(Collectors.toList());
或 uList.stream.map(User->User.getId()).collect(Collectors.toList());
  • 把一个List<对象> 并按照一定规则选取,返回一个新的list
* 筛选User的age >18的Age集合  
uList.stream.filter(U->{return U.getAge()>18 }).collect(Collectors.toList());
  • 把一个List<对象> 从中取出特定的一些内容, 并按照一定规则选取,并赋值,返回一个新的list
* 筛选User的标记sign赋值为true   
uList.stream.map(User->{ 
		User.setSign(true);
		return User;
		}).collect(Collectors.toList());
  • 把一个List<对象> 从中取出特定的一些内容, 并按照一定规则选取,并赋值,返回一个Map
1、指定key-value,value是对象中的某个属性值。

     Map<Integer,String> userMap1 = userList.stream().collect(Collectors.toMap(User::getId,User::getName));

2、指定key-value,value是对象本身,User->User 是一个返回本身的lambda表达式

    Map<Integer,User> userMap2 = userList.stream().collect(Collectors.toMap(User::getId,User->User));

3、指定key-value,value是对象本身,Function.identity()是简洁写法,也是返回对象本身

     Map<Integer,User> userMap3 = userList.stream().collect(Collectors.toMap(User::getId, Function.identity()));

4、指定key-value,value是对象本身,Function.identity()是简洁写法,也是返回对象本身,key 冲突的解决办法,这里选择第二个key覆盖第一个key。

     Map<Integer,User> userMap4 = userList.stream().collect(Collectors.toMap(User::getId, Function.identity(),(key1,key2)->key2));
————————————————
版权声明:本内容摘自为CSDN博主「﹏半生如梦愿梦如真て」的原创文章,
遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lspj201007186/java/article/details/91039052
  • 把两个List<对象>从中取出特定的一些内容, 并按照一定规则选取,
    并把第二个集合中的内容赋值给第一个,返回一个新的集合
  • 新的集合List listNew
  • 新的对象User1[id, nm,age,sign]
uList.stream().map( item ->  listNew.stream()
    .filter(newList->newList.getUserId().equals(XXX) && ( newList.getSign.equals(true) )
    .findFirst() //把满足filter的集合获取到
    .map(newList-> {
    	//  ....按内容填充...
    	item.setUser(new User());item.setId(newList.getId()) return item;
    })               
 ).collect(Collectors.toList());

~~待续

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章