交集 并集 差集
交集(listA ∩ ListB ):
List < Person > listC = listA. stream ( ) . filter ( item -> listB. contains ( item) ) . collect ( Collectors . toList ( ) ) ;
listC中的元素有:属性name值为 aa, bb, cc 的对象。
并集(listA ∪ listB):
listA. addAll ( listB) ;
List < Person > listC = listA. stream ( ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
listC中的元素有:属性name值为 aa, bb, cc , dd的对象。
差集(listA - listB):
List < Person > listC = listA. stream ( ) . filter ( item -> ! listB. contains ( item) ) . collect ( Collectors . toList ( ) ) ;
listC中的元素有:属性name值为 dd的对象。
List集合的过滤之lambda表达式
stmtList = stmtList. stream ( ) . filter ( stmt -> ! ( stmt instanceof OracleInsertStatement ) && stmt. getParent ( ) == null ) . collect ( Collectors . toList ( ) ) ;
lambda表达式将List对象某个字段转换以逗号分隔的String类型
List < Long > ids = users. stream ( ) . map ( User :: getId ) . collect ( Collectors . toList ( ) ) ;
System . out. println ( "ids: " + ids) ;
System . out. println ( ) ;
String idsTxt = users. stream ( ) . map ( User :: getId ) . map ( String :: valueOf ) . collect ( Collectors . joining ( "," ) ) ;
System . out. println ( "idsTxt: " + idsTxt) ;
System . out. println ( ) ;
List < String > names = users. stream ( ) . map ( User :: getName ) . collect ( Collectors . toList ( ) ) ;
System . out. println ( "names: " + names) ;
分组功能
Collection < List < CheckTaskAndCompanyBindEntity > > collect2 = checkTaskAndCompanyBindByList. stream ( ) .
filter ( s -> s. getTaskType ( ) == 2 ) . collect ( Collectors . groupingBy ( CheckTaskAndCompanyBindEntity :: getCompanyId ) ) . values ( ) ;
排序功能
List . sort ( Comparator . comparing ( CheckBjwaInputResp :: getCheckNum ) ) ;
List . sort ( Comparator . comparing ( CheckBjwaInputResp :: getCheckNum ) . reversed ( ) ) ;
Map相关操作
Optional < Object > first = map. values ( ) . stream ( ) . findFirst ( ) ;
String s = first. get ( ) . toString ( ) ;
cloumMap. forEach ( ( k, v) -> {
System . out. println ( "k:" + k + ",v:" + v) ;
} ) ;
filter 过滤
List < UserInfo > userInfoResultList = userInfoList. stream ( ) . filter ( user -> user. getAge ( ) > 20 ) . collect ( Collectors . toList ( ) ) ;
userInfoResultList. forEach ( a -> System . out. println ( a. getUserName ( ) ) ) ;
forEach 遍历
List . forEach ( System . out:: println ) ;
Map . forEach ( ( k, v) -> System . out. println ( k + ":\t" + v) ) ;
groupingBy分组
Map < String , List < UserInfo > > result = originUserInfoList. stream ( )
. collect ( Collectors . groupingBy ( UserInfo :: getCity ) ) ;
sorted+Comparator排序
userInfoList = userInfoList. stream ( ) . sorted ( Comparator . comparing ( UserInfo :: getAge ) ) . collect ( Collectors . toList ( ) ) ;
userInfoList. forEach ( a -> System . out. println ( a. toString ( ) ) ) ;
System . out. println ( "开始降序排序" ) ;
userInfoList = userInfoList. stream ( ) . sorted ( Comparator . comparing ( UserInfo :: getAge ) . reversed ( ) ) . collect ( Collectors . toList ( ) ) ;
userInfoList. forEach ( a -> System . out. println ( a. toString ( ) ) ) ;
distinct去除重复的元素
List < String > list = Arrays . asList ( "A" , "B" , "F" , "A" , "C" ) ;
List < String > temp = list. stream ( ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
temp. forEach ( System . out:: println ) ;
map 转换
List < String > list = Arrays . asList ( "jay" , "tianluo" ) ;
List < String > upperCaselist = list. stream ( ) . map ( String :: toUpperCase ) . collect ( Collectors . toList ( ) ) ;
upperCaselist. forEach ( System . out:: println ) ;
Max,Min 最大最小
Optional < UserInfo > maxAgeUserInfoOpt = userInfoList. stream ( ) . max ( Comparator . comparing ( UserInfo :: getAge ) ) ;
maxAgeUserInfoOpt. ifPresent ( userInfo -> System . out. println ( "max age user:" + userInfo) ) ;
Optional < UserInfo > minAgeUserInfoOpt = userInfoList. stream ( ) . min ( Comparator . comparing ( UserInfo :: getAge ) ) ;
minAgeUserInfoOpt. ifPresent ( userInfo -> System . out. println ( "min age user:" + userInfo) ) ;
count 统计
long count = userInfoList. stream ( ) . filter ( user -> user. getAge ( ) > 18 ) . count ( ) ;
System . out. println ( "大于20岁的用户:" + count) ;