Java的Stream流
Java的Stream流
[讲透JAVA Stream的collect用法与原理,远比你想象的更强大_stream.collection-CSDN博客](https://blog.csdn.net/veezean/article/details/125857074?ops_request_misc=%7B%22request%5Fid%22%3A%22172258578116800227423214%22%2C%22scm%22%3A%2220140713.130102334..%22%7D&request_id=172258578116800227423214&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-125857074-null-null.142^v100^pc_search_result_base8&utm_term=Java stream collect&spm=1018.2226.3001.4187)
[Java–Stream流详解_java stream-CSDN博客](https://blog.csdn.net/MinggeQingchun/article/details/123184273?ops_request_misc=%7B%22request%5Fid%22%3A%22172258592916800182196501%22%2C%22scm%22%3A%2220140713.130102334..%22%7D&request_id=172258592916800182196501&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-123184273-null-null.142^v100^pc_search_result_base8&utm_term=Java stream流&spm=1018.2226.3001.4187)
stream的创建:
1 | //1.Stream.of(array) (这里面的1,2,3,4其实是Array的类型) |
操作符
常用中间操作符
filter:用于过滤 ,接受一个返回boolean值的函数,返回一个流
1
list.stream().filter(number->number>=2).collect(Collectors.toList());
map:用于映射 ,映射流中的每一个元素为另一个流中的元素
1
2
3
4
5//toList
list.stream().(str->str+"-IT").collect(Collectors.toList());
//toMap 在 toMap 方法中,以每个整数的字节值为键,该整数乘以 2 为值,当遇到重复的键时取最后一个值。(这里实际上可以用任何能区分不同键的方式作为第一个参数,而不一定是 Integer::byteValue)
list.stream().collect(Collectors.toMap(Integer::byteValue,num->num*2,(num1,num2)->num2));dinstinct: 用于去重
1
numbers.stream().filter(i -> i % 2 == 0).distinct().forEach(System.out::println);
sorted: 用于排序
1
List<String> collect = strings1.stream().sorted().collect(Collectors.toList());
limit: 可以将流限制为指定的元素数
1
List<Integer> collect = numbers.stream().limit(3).collect(Collectors.toList());
常用终端操作符
collect: 收集器,将流转换为其他形式
1
2
3
4
5strings.stream().collect(Collectors.toSet());
strings.stream().collect(Collectors.toList());
strings.stream().collect(Collectors.toMap());forEach:遍历流
1
strings.stream().forEach(s -> out.println(s));
Count(计数)
1
2List<String> names = Arrays.asList("Alex", "Brian", "Charles", "David");
long count = names.stream().count();