java stream流操作
时间: 2023-10-13 22:18:31 浏览: 86
Java Stream是Java 8引入的一种新型数据处理方式,它提供了一个高效、便捷、函数式的处理集合、数组等数据的方式。Stream可以让你使用类似SQL语句查询的方式来操作集合数据,它可以通过链式操作来过滤、映射、排序、分组、聚合等操作,而且可以非常方便地并行处理大数据。下面是一些常见的Stream操作:
1.筛选:filter()
filter()方法用于过滤出符合条件的元素,它接收一个Predicate函数式接口作为参数,Predicate接口表示一个布尔类型的函数,用于判断元素是否符合条件。
示例:
```
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> res = list.stream().filter(x -> x > 3).collect(Collectors.toList());
System.out.println(res); // [4, 5]
```
2.映射:map()
map()方法用于将一个元素转换成另外一个元素,它接收一个Function函数式接口作为参数,Function接口表示一个将一个值转换成另一个值的函数。
示例:
```
List<String> list = Arrays.asList("java", "python", "ruby");
List<Integer> res = list.stream().map(String::length).collect(Collectors.toList());
System.out.println(res); // [4, 6, 4]
```
3.排序:sorted()
sorted()方法用于对Stream进行排序,它可以接收一个Comparator函数式接口作为参数,Comparator接口表示一个比较两个值的函数。
示例:
```
List<Integer> list = Arrays.asList(3, 1, 4, 2, 5);
List<Integer> res = list.stream().sorted().collect(Collectors.toList());
System.out.println(res); // [1, 2, 3, 4, 5]
```
4.聚合:reduce()
reduce()方法用于对Stream中的元素进行聚合操作,它接收一个BinaryOperator函数式接口作为参数,BinaryOperator接口表示一个将两个值合并成一个值的函数。
示例:
```
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
int res = list.stream().reduce(0, (x, y) -> x + y);
System.out.println(res); // 15
```
5.收集:collect()
collect()方法用于将Stream中的元素收集到一个集合中,它接收一个Collector接口作为参数,Collector接口表示一个将元素收集到一个集合中的函数。
示例:
```
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> res = list.stream().filter(x -> x > 3).collect(Collectors.toList());
System.out.println(res); // [4, 5]
```
这些操作只是Stream中的一部分,Stream提供了很多高效、便捷、函数式的操作方式,可以满足各种需求。
阅读全文