List中又两种流的用法
- stream() − 为集合创建串行流。
- parallelStream() − 为集合创建并行流。
1、Map遍历List和for对等
List<Long> collect = list.stream().map(User::getId).collect(Collectors.toList());
输出
1
2
3
4
5
2、Filter过滤
List<User> collect = list.stream().filter(user -> user.getId() > 2).collect(Collectors.toList());
输出
User(id=3, username=null, password=null, email=null, age=null, sex=null, phone=null, type=null, isDel=null, createTime=null, createUid=null, updateTime=null, updateUid=null)
User(id=4, username=null, password=null, email=null, age=null, sex=null, phone=null, type=null, isDel=null, createTime=null, createUid=null, updateTime=null, updateUid=null)
User(id=5, username=null, password=null, email=null, age=null, sex=null, phone=null, type=null, isDel=null, createTime=null, createUid=null, updateTime=null, updateUid=null)
3、mapToInt
int sum = list.stream().mapToInt(user -> Integer.parseInt(String.valueOf(user.getId()))).sum();
输出
15
4、anyMatch,存在返回true,不存在则返回false
boolean anyMatch = list.stream().anyMatch(user -> user.getId() == 1);
输出
true
5、noneMatch,存在返回false,不存在则返回true
boolean anyMatch = list.stream().noneMatch(user -> user.getId() == 1);
输出
false
6、sorted排序,根据Comparator.comparing中条件排序,加上reversed为倒排,不加则正序
List<User> collect = list.stream().sorted(Comparator.comparing(User::getId).reversed()).collect(Collectors.toList());
输出
User(id=5, username=null, password=null, email=null, age=null, sex=null, phone=null, type=null, isDel=null, createTime=null, createUid=null, updateTime=null, updateUid=null)
User(id=4, username=null, password=null, email=null, age=null, sex=null, phone=null, type=null, isDel=null, createTime=null, createUid=null, updateTime=null, updateUid=null)
User(id=3, username=null, password=null, email=null, age=null, sex=null, phone=null, type=null, isDel=null, createTime=null, createUid=null, updateTime=null, updateUid=null)
User(id=2, username=null, password=null, email=null, age=null, sex=null, phone=null, type=null, isDel=null, createTime=null, createUid=null, updateTime=null, updateUid=null)
User(id=1, username=null, password=null, email=null, age=null, sex=null, phone=null, type=null, isDel=null, createTime=null, createUid=null, updateTime=null, updateUid=null)
7、distinct去重
List<User> collect = list.stream().distinct().collect(Collectors.toList());
输出
User(id=1, username=null, password=null, email=null, age=null, sex=null, phone=null, type=null, isDel=null, createTime=null, createUid=null, updateTime=null, updateUid=null)
User(id=2, username=null, password=null, email=null, age=null, sex=null, phone=null, type=null, isDel=null, createTime=null, createUid=null, updateTime=null, updateUid=null)
User(id=3, username=null, password=null, email=null, age=null, sex=null, phone=null, type=null, isDel=null, createTime=null, createUid=null, updateTime=null, updateUid=null)
User(id=4, username=null, password=null, email=null, age=null, sex=null, phone=null, type=null, isDel=null, createTime=null, createUid=null, updateTime=null, updateUid=null)
User(id=5, username=null, password=null, email=null, age=null, sex=null, phone=null, type=null, isDel=null, createTime=null, createUid=null, updateTime=null, updateUid=null)
8、toMap,List转map,value为对象
Map<Long, User> collect = list.stream().collect(Collectors.toMap(User::getId, Function.identity()));
输出
User(id=1, username=null, password=null, email=null, age=null, sex=null, phone=null, type=null, isDel=null, createTime=null, createUid=null, updateTime=null, updateUid=null)
User(id=2, username=null, password=null, email=null, age=null, sex=null, phone=null, type=null, isDel=null, createTime=null, createUid=null, updateTime=null, updateUid=null)
User(id=3, username=null, password=null, email=null, age=null, sex=null, phone=null, type=null, isDel=null, createTime=null, createUid=null, updateTime=null, updateUid=null)
User(id=4, username=null, password=null, email=null, age=null, sex=null, phone=null, type=null, isDel=null, createTime=null, createUid=null, updateTime=null, updateUid=null)
User(id=5, username=null, password=null, email=null, age=null, sex=null, phone=null, type=null, isDel=null, createTime=null, createUid=null, updateTime=null, updateUid=null)
8、toMap,List转map,value为特定值
Map<Long, Integer> collect = list.stream().collect(Collectors.toMap(User::getId, User::getAge, (v1, v2) -> v2));
输出
key: 1 value: 11
key: 2 value: 22
key: 3 value: 33
key: 4 value: 44
key: 5 value: 55