巧⽤List.stream()⽅法对List做处理
List.steam()的强⼤之处在此不做赘述。
直接进⼊主题:
1.过滤Bean List中,某些字段等于指定值的所有⾏
List<Member> list = JavaList(Member.class);
List<String> roleList = new ArrayList<>();
roleList.add(roleName);
List<Member> filterResult = list.stream().filter((Member m)-&ProjectRole())).List());
2.判断Bean List中,是否存在某个属性的值等于指定的值
//⽅式1.直接使⽤lamda表达式判断filterResult中是否包含personEmail,推荐此⽅法
桂花有什么特点
if (filterResult.stream().filter(w->String.PersonEmail()).equals(personEmail)).findAny().isPrent()){
2015属什么
log.info("filterResult包含"+personEmail);
}
//⽅式2,在过滤的结果基础上,对值为personEmail的⾏再⽣成⼀个List
List<String> personEmailList = new ArrayList<>();
personEmailList.add(personEmail);
List<Member> emailResult = filterResult.stream().filter((Member mem)-&PersonEmail())).List());
log.info(emailResult.size()+"过滤后是否包含"+personEmail);
3.将Bean List中,指定属性的列的所有值转换成Set(Set特性,已去重)
Set<Long> result = list.stream().map(siteAssign-&VENDOR_ID()).苏州有哪些园林
Set());
4.将Bean List中,指定属性的列的所有值转换成LIst(未去重)
List<Long> result = list.stream().map(siteAssign-&VENDOR_ID()).List());
5.根据Bean List中的指定属性进⾏Distinct ,这样得到的⾏是⼀个完整的⾏,取表中VENDOR_ID相同的⾏中的任⼀⾏。
//blog.csdn/weixin_30451709/article/details/96156020
//通过treet去重,获取⾮员⼯供应商中的所有供应商ID,不重复
List<SuppSiteAssign> result1 = siteAssignList.stream().filter(w -> !"EMPLOYEE".VENDOR_TYPE_LOOKUP_CODE())).collect(
吴珠恩
//同上,由其他⽅法完成
List<SuppSiteAssign> result2= siteAssignList.parallelStream().filter(StreamUtil.distinctByKey(SuppSiteAssign::getVENDOR_ID)).List()); StreamUtil
public class StreamUtil {
录音笔推荐/**
* /questions/23699371/java-8-distinct-by-property
* /woshimrf/p/java-list-distinct.html
* @return
*/
public static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
Set<Object> en = wKeySet();
return t -> en.add(keyExtractor.apply(t));
}
}竹石拼音
关于parallelStream(),我尚未理解清楚。具体待查证。
6.既然有distinct⽅法,就必然有group by⽅法
//按⽤户,role分组求数量
Map<String, Map<String, Long>> tradeNumMap = dataAccessBeans.stream().upingBy(DataAccessBean::getUSERNAME,
沁人心脾是什么意思
for(String urName : tradeNumMap.keySet()){
Map<String, Long> map = (urName);
for(String roleName : map.keySet()){
用绳子编手链Long count = (roleName);
if(count>10){
log.info(urName+"-"+roleName+"-"+count);
}
}
}