java stream 求均值
时间: 2023-07-20 09:35:14 浏览: 100
可以使用 Java 8 中的 Stream 来求均值,示例代码如下:
```java
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
double avg = list.stream().mapToInt(Integer::intValue).average().orElse(0.0);
System.out.println("平均值为:" + avg);
```
首先将 List 转换成 IntStream,然后调用 average 方法求均值。注意如果 List 为空,需要使用 orElse 方法设置默认值。
相关问题
java stream<Float> 求均值
可以使用 Java 8 中的 Stream 来求均值,示例代码如下:
```java
List<Float> list = Arrays.asList(1.0f, 2.0f, 3.0f, 4.0f, 5.0f);
double avg = list.stream().mapToDouble(Float::doubleValue).average().orElse(0.0);
System.out.println("平均值为:" + avg);
```
首先将 List 转换成 DoubleStream,然后调用 average 方法求均值。注意如果 List 为空,需要使用 orElse 方法设置默认值。
java stream 聚合
### Java Stream API 的聚合操作
Java Stream API 提供了一系列强大的工具来简化集合数据的操作,其中包括聚合操作。通过 `reduce` 方法,可以实现诸如求和、乘积等常见的聚合计算。
#### 并行流的聚合操作
当处理大量数据时,并行流能够显著提升性能。下面是一个简单的例子,展示如何利用 `parallelStream()` 和 `reduce()` 来完成并行求和:
```java
import java.util.Arrays;
import java.util.List;
public class ParallelStreamExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.parallelStream()
.reduce(0, Integer::sum);
System.out.println("Sum: " + sum); // 输出: Sum: 15
}
}
```
上述代码片段展示了如何使用 `parallelStream()` 对列表中的整数执行并行求和操作[^3]。
#### 使用 reduce 进行自定义聚合
除了基本的加法运算外,还可以通过 `reduce` 实现更复杂的逻辑。例如,假设我们需要找到两个字符串的最大长度,则可以通过如下方式实现:
```java
import java.util.Arrays;
import java.util.Optional;
public class ReduceStringExample {
public static void main(String[] args) {
String[] strings = {"apple", "banana", "watermelon", "grape"};
Optional<String> longest = Arrays.stream(strings)
.reduce((s1, s2) -> s1.length() >= s2.length() ? s1 : s2);
longest.ifPresent(s -> System.out.println("Longest string is: " + s)); // 输出: Longest string is: watermelon
}
}
```
此示例说明了如何借助 `reduce` 找到数组中最长的字符串[^2]。
#### 数字类型的专用方法
对于数值型数据,Stream API 提供了一些专门的方法来进行高效的聚合操作,比如 `IntStream`, `DoubleStream` 或者 `LongStream` 中的 `sum()`, `average()`, `max()`, `min()` 等静态方法可以直接调用来获取相应的统计值。
```java
import java.util.stream.IntStream;
public class NumericStreamsExample {
public static void main(String[] args) {
IntStream.rangeClosed(1, 10)
.filter(n -> n % 2 == 0)
.forEach(System.out::println); // 输出偶数序列:2, 4, 6, 8, 10
double average = IntStream.of(7, 2, 19, 88, 4).average().orElse(-1.0);
System.out.println("Average value is: " + average); // 输出平均值
}
}
```
这里演示的是如何创建一个范围内的整数流,并筛选其中的偶数打印出来;以及怎样计算一组给定数字的均值[^1]。
---
阅读全文
相关推荐














