java8 List<Object>转double[]
时间: 2024-10-15 08:19:12 浏览: 19
Java中List<? extends T>与List<? super T>的区别(值得珍藏)
在Java 8中,将`List<Object>`转换为`double[]`需要对每个元素进行检查和转换,因为`Object`是一个非常泛型的类型,可以包含各种类型的元素。如果你的`List`确实存储的是`Number`类型的子类,比如`Integer`、`Double`等,你可以这样做:
```java
import java.util.List;
import java.util.stream.Collectors;
List<Object> objectList = ...; // 假设这里都是Number类型的元素
double[] doubleArray = objectList.stream()
.mapToDouble(Double::doubleValue) // 将Number类型转换为double
.toArray(Double[]::new); // 转换并创建新的double数组
```
这段代码首先通过流(Stream)操作将所有`Number`类型的元素转换为`double`,然后收集到一个新的`double`数组中。
如果列表中有非`Number`类型的元素,那么在`mapToDouble`方法会抛出`ClassCastException`。因此,在实际使用前,最好保证列表里的元素类型都是`Number`或其子类。
阅读全文