java 8 stream boxed()
时间: 2024-05-05 17:16:30 浏览: 68
The `boxed()` method is a terminal operation in Java 8 stream that returns a `Stream` consisting of the elements of the original stream, boxed to their corresponding wrapper classes.
For example, if you have a `Stream<Integer>` and you want to convert it to a `Stream<Object>`, you can use the `boxed()` method as follows:
```
Stream<Integer> intStream = Stream.of(1, 2, 3, 4, 5);
Stream<Object> objStream = intStream.boxed();
```
The `boxed()` method is useful when you need to perform operations on a stream of primitive values, such as `IntStream`, `LongStream`, or `DoubleStream`, but your code requires a `Stream` of objects.
For example, if you have an `IntStream` and you want to find the average of its elements, you can use the `average()` method, which returns an `OptionalDouble`. However, if you need to return the average as a `Double` instead of an `OptionalDouble`, you can use the `boxed()` method to convert the `IntStream` to a `Stream<Integer>` and then use the `mapToDouble()` method to convert it to a `DoubleStream`:
```
IntStream intStream = IntStream.of(1, 2, 3, 4, 5);
double avg = intStream.average()
.orElse(0.0);
```
This code returns the average as an `OptionalDouble`. To return it as a `Double`, you can use the `boxed()` method as follows:
```
IntStream intStream = IntStream.of(1, 2, 3, 4, 5);
double avg = intStream.boxed()
.mapToDouble(Integer::doubleValue)
.average()
.orElse(0.0);
```