将 List<Object[]> 转换为 list<String> 转换异常
Convert List<Object[]> to list<String> Cast exception
我有一个包含对象(字符串)数组的列表:
List<Object[]> params = ...
我想将这个列表转换为字符串列表List
List<Object> results = params.stream()
.flatMap(arr -> Arrays.stream(arr))
.collect(Collectors.toList());
然后我想做类似的事情:
results.forEach(System.out::println);
我得到这个异常:
java.lang.ClassCastException: class java.lang.String cannot be cast to class [Ljava.lang.Object; (java.lang.String and [Ljava.lang.Object; are in module java.base of loader 'bootstrap')
这是我创建参数的方式:
Query query = entityManager.createNativeQuery(sql);
List<Object[]> params = query.getResultList();;
- 流式传输数组
- 将数组展平为对象流。
- 过滤掉非字符串。
- 通过将剩余对象映射到字符串
- 收集到列表中
List<Object> params = List.of(1, 2,
"hello",
"computer", new Object(), 4.32,
new Object[]{1,2});
List<String> strings = params.stream()
.filter(ob -> ob instanceof String)
.map(ob -> (String) ob)
.collect(Collectors.toList(), "java");
System.out.println(strings);
版画
[hello, computer, java]
import java.util.*;
import java.util.stream.Stream;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class HelloWorld{
public static void main(String []args){
Object[] a = { "A", "B" };
Object[] b = { "C", "D" };
Object[] c = { "E", "F" };
List<Object[]> params = new ArrayList();
params.add(a);
params.add(b);
params.add(c);
List<String> str = params.stream()
.flatMap(Arrays::stream).map(value -> (String) value)
.collect(Collectors.toList());
for(String s:str){
System.out.println(s);
}
}
}
我有一个包含对象(字符串)数组的列表:
List<Object[]> params = ...
我想将这个列表转换为字符串列表List
List<Object> results = params.stream()
.flatMap(arr -> Arrays.stream(arr))
.collect(Collectors.toList());
然后我想做类似的事情:
results.forEach(System.out::println);
我得到这个异常:
java.lang.ClassCastException: class java.lang.String cannot be cast to class [Ljava.lang.Object; (java.lang.String and [Ljava.lang.Object; are in module java.base of loader 'bootstrap')
这是我创建参数的方式:
Query query = entityManager.createNativeQuery(sql);
List<Object[]> params = query.getResultList();;
- 流式传输数组
- 将数组展平为对象流。
- 过滤掉非字符串。
- 通过将剩余对象映射到字符串
- 收集到列表中
List<Object> params = List.of(1, 2,
"hello",
"computer", new Object(), 4.32,
new Object[]{1,2});
List<String> strings = params.stream()
.filter(ob -> ob instanceof String)
.map(ob -> (String) ob)
.collect(Collectors.toList(), "java");
System.out.println(strings);
版画
[hello, computer, java]
import java.util.*;
import java.util.stream.Stream;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class HelloWorld{
public static void main(String []args){
Object[] a = { "A", "B" };
Object[] b = { "C", "D" };
Object[] c = { "E", "F" };
List<Object[]> params = new ArrayList();
params.add(a);
params.add(b);
params.add(c);
List<String> str = params.stream()
.flatMap(Arrays::stream).map(value -> (String) value)
.collect(Collectors.toList());
for(String s:str){
System.out.println(s);
}
}
}