我正在尝试使用 --- 将 List<Object>
转换为 Map<String, List>
Streams
,
public class User{
String name;
String age;
String org;
}
我有 List<Users>
,需要收集到 Map<String, Object> m
,
m.put("names", List of names,);
m.put("age", List of age);
m.put("org", List of org);
在命名查询中使用 -> 例如: select * from table ... where names in (:names) and age in (:age) and org in (:org)
截至目前,我正在做
List<String> names = userList.stream().map(User::getName).collect(Collectors.toList());
List<String> age= userList.stream().map(User::getAge).collect(Collectors.toList());
List<String> org= userList.stream().map(User::getName).collect(Collectors.toList());
如何在仅流式传输到列表一次的同时收集所有值?
原文由 Rinsen S 发布,翻译遵循 CC BY-SA 4.0 许可协议
我相信这样的事情应该有效:
它将每个
User
转换为Map<String,String>
(包含由所需键索引的 3 个必需属性),然后按键对所有用户映射的条目进行分组。编辑:
这是另一种替代方法,它直接创建
Map.Entry
而不是创建小的HashMap
s,因此它应该更有效: