java - 转换列表
问题描述
我有一个包含对象数组(字符串)的列表:
List<Object[]> params = ...
我想将此列表转换为字符串列表
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]
推荐阅读
- node.js - SQS 和 SNS 仅在前一个用户拒绝或没有响应的情况下向用户一一发送通知
- vb.net - 是否可以在 SQLite 中选择更多语句?
- macos - React Native App Atom IDE 错误不允许创建配置文件夹
- flutter - 将项目附加/前置到 ListView
- c# - ASP.NET Core 3.0 Web API 路由不起作用
- sql - 获取通过一个属性连接的父级及其子级
- mysql - Sequelize 中的关联抛出错误为
未连接到 - java - 这个程序有什么错误?它没有给出任何输出。为什么?
- javascript - 如何在 Vue.js 中将列表拆分为页面?
- rest - 使用 OpenAPI 到底有什么意义?