Java lambda list相加求和
时间: 2024-10-09 17:07:19 浏览: 34
在Java中,你可以使用lambda表达式和流(Stream) API来对List中的整数求和。以下是简单的步骤:
```java
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); // 创建一个整数列表
int sum = numbers.stream() // 使用stream()方法将列表转换为流
.mapToInt(Integer::intValue) // 将每个元素转换为int值
.sum(); // 使用sum()方法计算总和
System.out.println("Sum: " + sum);
}
}
```
在这个例子中,`mapToInt()`方法用于将每个Integer对象映射到它的原始int值,然后`sum()`方法计算所有这些值的总和。
相关问题
Java lambda BigDecimal list相加求和
在Java中,如果你有一个`BigDecimal`类型的列表,并想要使用Lambda表达式计算它们的总和,你可以这样做:
首先,假设你有一个`List<BigDecimal>`叫做`numbers`,你可以使用Java 8引入的Stream API来实现这个操作:
```java
import java.util.List;
import java.math.BigDecimal;
List<BigDecimal> numbers = ... // 初始化你的BigDecimal列表
BigDecimal sum = numbers.stream()
.map(BigDecimal::add) // 使用Lambda表达式对每个元素进行加法运算
.reduce(BigDecimal.ZERO, BigDecimal::add); // 最后将所有元素累加起来
System.out.println("Sum: " + sum);
```
这里,`map(BigDecimal::add)`将列表中的每个元素逐个加上,然后`reduce(BigDecimal.ZERO, BigDecimal::add)`从零开始累积所有元素。
Java lambda BigDecimal list相加求和多种方式
在Java中,可以使用BigDecimal列表并结合lambda表达式来计算它们的和。以下是几种不同的方法:
1. **Using forEach和Stream API**:
```java
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
List<BigDecimal> numbers = Arrays.asList(BigDecimal.ONE, BigDecimal.TEN, BigDecimal.valueOf(0.5));
BigDecimal sum = numbers.stream()
.map(BigDecimal::add)
.reduce(BigDecimal.ZERO, BigDecimal::add);
System.out.println("Sum: " + sum);
```
在这个例子中,我们先创建了一个BigDecimal列表,然后使用`stream()`将其转换为流,接着通过`map()`函数对每个元素应用加法操作,最后使用`reduce()`函数累加所有结果。
2. **使用传统for循环**:
```java
public BigDecimal sumByForLoop(List<BigDecimal> numbers) {
BigDecimal total = BigDecimal.ZERO;
for (BigDecimal num : numbers) {
total = total.add(num);
}
return total;
}
// 调用
BigDecimal sum = sumByForLoop(numbers);
```
这里遍历列表,逐个将数字添加到总和中。
3. **Lambda expression in a functional interface**:
如果有一个自定义的`Function`或者`UnaryOperator`接口,并实现了`summing`功能,你可以这样做:
```java
interface Summable {
BigDecimal apply(BigDecimal num);
}
Summable adder = (num) -> num.add(BigDecimal.ONE); // 或者直接写成 num -> num
BigDecimal sum = numbers.stream().map(adder).reduce(BigDecimal.ZERO, BigDecimal::add);
```
使用匿名内部类或者静态导入简化了表达式。
阅读全文