Java-Stream
Java-Stream
cmyangmap
作用:将流中的每一个元素转换为另外一类元素
1 | List<User> userList = new ArrayList<>(); |
filter
作用:过滤流中的每一个元素,符合条件的保留下来
1 | List<User> result = userList.stream() |
sorted
作用:对元素进行排序
自然排序sorted():
1 | List<User> result = userList.stream() |
自定义排序sorted(Comparator comparator) :
1 | List<User> result = userList.stream() |
反转排序
1 | List<User> result = userList.stream() |
limit
作用:返回的集合最多包涵的元素个数
1 | List<User> result = userList.stream() |
allMatch
作用:所有元素都匹配成功返回true
1 | boolean result = userList.stream() |
anyMatch
作用:任意一个元素匹配成功返回true
1 | boolean result = userList.stream() |
max/min
作用:返回规则中结果最大/最小的一个元素
1 | User result = userList.stream() |
reduce
作用:聚合操作,根据规则将流中的元素计算后返回一个唯一的值
1 | //返回年龄最大的User |
带有初始值的
1 | //在100基础上,加每一个user的年龄 |
forEach
作用:迭代元素,
注意:不能continue;break;return;不能修改外部变量值
1 | list.forEach(System.out::println); |
collect
作用:对流数据进行归集
1 | <R, A> R collect(Collector<? super T, A, R> collector); |
Collectors可以创建多种Collector的实现
Collectors.toList()收集为一个list
Collectors.toMap()收集为一个map,用于list转map
1 | 把用户集合转为key是name,value是age的map |
Collectors.toSet()
Collectors.toCollection() :⽤⾃定义的实现Collection的数据结构收集
- Collectors.toCollection(LinkedList::new)
- Collectors.toCollection(CopyOnWriteArrayList::new)
- Collectors.toCollection(TreeSet::new)
joining
作用:拼接字符串
直接拼接
1 | String r = userList.stream().map(User::getName).collect(Collectors.joining()); |
以逗号分隔符拼接(可以换其它符号)
1 | String r = userList.stream().map(User::getName).collect(Collectors.joining(",")); |
以括号开头和结尾逗号分隔拼接(可以换其它符号)
1 | String r = userList.stream().map(User::getName).collect(Collectors.joining(",","(",")")); |