#java #arrays #object #arraylist #casting
#java #массивы #объект #arraylist #Кастинг
Вопрос:
Я просто пытаюсь удалить указанное ниже исключение. java.lang.Исключение ClassCastException: [Ljava.lang.Объект; не может быть преобразован в [Ljava.lang.Строку; Пожалуйста, помогите мне здесь.
Мне нужно преобразовать его в List<String[]>. Как я должен с этим справиться?
List<Object[]> values = query.getResultList();
List<String[]> strings = new ArrayList<>();
for (Object[] object : values) {
strings.add((String[]) object);
}
значения: = [obj1, obj2, obj3]
obj1 = «1», «01»;
obj2 = «1», «02»;
obj3 = «1:, «03»;
Комментарии:
1. Вы пробовали приводить каждый элемент массива объектов? Я имею в виду более глубокое приведение.
2. ДА. Это, в конечном счете, мне нужно, чего не происходит. выдал такое же исключение ….. Map<Строка, Список<строка>> resultMap = values.stream().collect(Коллекторы.groupingBy (o -> (o)[0].toString(), Коллекторы.mapping(o -> (o)[1].toString(), коллекторы. ToList())));
Ответ №1:
Я думаю, вам следует использовать System.arraycopy
package com.lsk.backend;
import java.util.*;
import java.util.List;
/**
* @ClassName : Test //className
* @Description : //description
* @Author : shikai.liu //author
* @Date: 2020-08-27 09:13 //Date
*/
public class Test {
public static void main(String[] args) {
List<Object[]> values = getResultList();
List<String[]> strings = new ArrayList<>();
for (Object[] object : values) {
String[]dst=new String[object.length];
System.arraycopy(object,0,dst,0,dst.length);
strings.add(dst);
}
System.out.println(strings);
}
public static List<Object[]>getResultList(){
Object[][]result={
{
"0","1"
},
{
"0","2"
},
{
"0","3"
},
};
List<Object[]>ss=Arrays.asList(result);
return ss;
}
}
Ответ №2:
List<Object[]> values = query.getResultList();
List<String[]> strings = new ArrayList<>();
values.forEach(object -> {
String [] stringArray = new String[object.length];
System.arraycopy(object, 0, stringArray, 0,object.length);
strings.add(stringArray);
});
Ответ №3:
Это сработало для меня окончательно
values.forEach(o->{ strings.add(Arrays.copyOf(o, o.length, String[].class));});