java List<Object>转double[]
时间: 2024-10-15 09:19:22 浏览: 22
Java中List<? extends T>与List<? super T>的区别(值得珍藏)
将Java `List<Object>` 转换为 `double[]` 需要注意,因为`Object`类型的泛型并不能保证元素一定是`Double`类型,所以需要进行类型转换并检查元素是否可以被转换成`double`。这里是一个示例:
```java
import java.util.List;
import java.util.stream.Collectors;
public double[] listToDoubleArray(List<Object> objectList) {
// 确保所有元素都可以转换为double
if (objectList == null || objectList.isEmpty()) {
return new double[0];
}
List<Double> doubleList = objectList.stream()
.filter(item -> item instanceof Number) // 检查是否是Number类型
.map((Number n) -> (Double) n) // 将Number转换为Double
.collect(Collectors.toList());
// 检查是否有元素无法转换,若无则转换并返回数组
if (doubleList.size() != objectList.size()) {
throw new IllegalArgumentException("Not all elements can be converted to doubles");
}
double[] doubleArray = new double[doubleList.size()];
for (int i = 0; i < doubleList.size(); i++) {
doubleArray[i] = doubleList.get(i);
}
return doubleArray;
}
```
这个函数首先过滤出`List`中的`Number`类型元素,然后将它们转换为`Double`,最后收集到一个新的列表中。如果没有所有的元素都是`Number`类型或者可以转换成`double`,则会抛出异常。
阅读全文