Java stream 循环操作数组元素相加
时间: 2023-05-21 15:06:56 浏览: 115
可以使用 stream 的 reduce() 方法来实现数组元素相加的操作,代码如下:
int[] arr = {1, 2, 3, 4, 5};
int sum = Arrays.stream(arr).reduce(0, (a, b) -> a + b);
System.out.println(sum);
输出结果为:15
请问还有什么问题吗?
相关问题
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);
```
使用匿名内部类或者静态导入简化了表达式。
java对二维数据排序求平均值
在Java中,如果你有一个二维数组(例如,int[][] data),你可以首先对每一行进行排序,然后计算每行的平均值。这里是一个简单的步骤:
1. 对于每一行(二维数组的内部数组):
- 使用`Arrays.sort()`函数对当前行进行升序排列。注意,由于二维数组实际上是引用类型的数组,你需要先复制一行数据到一个新的数组,因为`sort()`操作会直接修改原数组。
```java
import java.util.Arrays;
// 假设data是你要排序的二维数组
for (int[] row : data) {
int[] sortedRow = Arrays.copyOf(row, row.length);
Arrays.sort(sortedRow);
}
```
2. 计算每行的平均值:
- 然后遍历排序后的行,并计算每个元素的平均值,可以相加后再除以行数。
```java
double sum = 0;
for (int[] sortedRow : data) {
double average = calculateAverage(sortedRow);
// 或者累加求和再除总行数
// sum += average;
System.out.println("行的平均值:" + average);
}
// 如果需要返回总平均值,可以在循环外计算:
// double totalAverage = sum / data.length;
```
其中`calculateAverage(int[] row)`是一个用于计算整数数组平均值的简单函数:
```java
public static double calculateAverage(int[] array) {
return Arrays.stream(array).average().orElse(0);
}
```
阅读全文