Java 如何从具有多行的SQL查询中获取非字符串数组字段

Java 如何从具有多行的SQL查询中获取非字符串数组字段,java,sql,arrays,hsqldb,Java,Sql,Arrays,Hsqldb,我有SQL(HSQLDB)表,带有VAL双数组[2000]字段 我使用返回多行VAL字段的查询 如果我尝试将数组作为 Array array = rs.getArray("VALS"); Double[] vals = (Double[]) array.getArray(); 我明白了 java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Double; 我可以通过从对象到字符串的双重转

我有SQL(HSQLDB)表,带有VAL双数组[2000]字段 我使用返回多行VAL字段的查询 如果我尝试将数组作为

Array array = rs.getArray("VALS");
Double[] vals = (Double[]) array.getArray();
我明白了

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Double;
我可以通过从对象到字符串的双重转换获得值,然后将字符串解析为双重值,如:

List<Double> values = new ArrayList<Double>();
for (Object o: (Object[])array.getArray()) {
    values.add(Double.parseDouble(o.toString()));
}
List values=new ArrayList();
对于(对象o:(对象[])数组。getArray(){
add(Double.parseDouble(o.toString());
}
但它看起来像是沉重的开销

是否有任何方法可以在不进行字符串转换或多个单行查询的情况下从数组SQL字段中获取数字?在调试器中,rs.getArray()向我显示了一个完美的数字值JDBCArray
数组[0.0E0,0.0E0,0.0E0,0.0E0…]
请尝试以下代码:

Double[]vals=Arrays.stream(array.getArray())
.map(Double::valueOf)

.toArray(双[]::新)

您不需要转换为字符串并返回。刚出演:

List<Double> values = new ArrayList<Double>(); 
for (Object o: (Object[])array.getArray()) {
    values.add((Double) o); 
}
List values=new ArrayList();
对于(对象o:(对象[])数组。getArray(){
加上((双)o);
}

未解决的编译问题:类型数组中的方法流(T[])不适用于参数(对象)。如果我将强制转换添加到Double[],我会得到与开始时相同的异常,如果我强制转换到Object[],则会得到未解决的编译问题:无法推断map(函数)的类型参数