java reduce的用法
Java Reduce的用法
Java Reduce是一个在Java 8中引入的新特性,它可以将一个集合中的所有元素通过某种规则进行计算并返回一个结果。Reduce方法可以用于对数组、列表、集合等各种数据结构进行计算,是一种非常强大和灵活的工具。逗号分割的字符串转数组
一、Reduce方法的定义和语法
Reduce方法定义如下:
```
T reduce(T identity, BinaryOperator<T> accumulator);
```
其中,T表示返回值类型,identity表示初始值,BinaryOperator<T>表示两个参数类型都为T并返回值也为T的函数式接口。
Reduce方法还有另外一种语法:
```
Optional<T> reduce(BinaryOperator<T> accumulator);
```
其中,Optional<T>表示可能为空的返回值类型。
二、Reduce方法的使用示例
下面通过几个示例来介绍Java Reduce方法的使用。
1. 对数组进行求和
假设有一个整型数组arr,我们需要求出这个数组中所有元素之和。可以使用如下代码:
```java
int[] arr = {1, 2, 3, 4, 5};
int sum = Arrays.stream(arr).reduce(0, (a, b) -> a + b);
System.out.println(sum); //输出15
```
这里使用了Arrays类中提供的stream()方法将数组转换成流,并调用reduce()方法对流中所有元素进行求和。初始值为0,accumulator函数式接口实现为lambda表达式 (a, b) -> a + b。
2. 对列表进行求积
假设有一个Double类型的列表list,我们需要求出这个列表中所有元素的积。可以使用如下代码:
```java
List<Double> list = Arrays.asList(1.0, 2.0, 3.0, 4.0, 5.0);
double product = list.stream().reduce(1.0, (a, b) -> a * b);
System.out.println(product); //输出120.0
```
这里使用了List类中提供的stream()方法将列表转换成流,并调用reduce()方法对流中所有元素进行求积。初始值为1.0,accumulator函数式接口实现为lambda表达式 (a, b) -> a * b。
3. 对集合进行字符串连接
假设有一个String类型的集合set,我们需要将这个集合中所有元素用逗号分隔并连接成一个字符串。可以使用如下代码:
```java
Set<String> set = new HashSet<>(Arrays.asList("Java", "Python", "C++"));
String result = set.stream().reduce("", (a, b) -> a + "," + b);
System.out.println(result); //输出Java,Python,C++
```
这里使用了Set类中提供的stream()方法将集合转换成流,并调用reduce()方法对流中所有元素进行字符串连接。初始值为"",accumulator函数式接口实现为lambda表达式 (a, b) -> a + "," + b。
4. 对Map进行统计计算
假设有一个Map<String,Integer>类型的map,我们需要统计其中所有value之和。可以使用如下代码:
```java
Map<String, Integer> map = new HashMap<>();
map.put("Java", 100);
map.put("Python", 200);
map.put("C++", 300);
int sum = map.values().stream().reduce(0, (a, b) -> a + b);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。