我期待将列表转换为 map
List<Element>
到 Map<String,List<Element>
的 map
Element 类包含键和值
public class Element {
public Element(final key, final value) {
this((Object) key, (Object) value, 1L);
}
public final Object getObjectKey() {
return key;
}
public final Object getObjectValue() {
return value;
}
}
我添加元素的方式就像
empRepository.save(new Element(empKey, empTransaction));
empKey 是 EmpKey 类的对象
public class EmpKey{
private String employeeId;
private String tenantId;
//Getters & Setters
}
在另一个类中,groupElementsByEmployeeId 方法尝试将这些 Collection 元素参数转换为映射
public void groupElementsByEmployeeId(Collection<Element> elements){
List<Element> to a map of Map<String,List<Element>
where Map key String is tenantId which is in EmpKey
}
根据EmpKey的属性tenantId对所有元素进行分组
EmpKey 是 Element 的键
//List<Element> to a map of Map<String,List<Element>
// where Map key String is tenantId which is in EmpKey
我开始了一些事情,但不知道如何获得我正在寻找的输出
elements.stream().collect(Collectors.groupingBy(Element::getObjectKey))
I have to cast groupingBy(Element::(EmpKey)getObjectKey.getTenantId))
最佳答案
我想你就在附近。我会这样做:
Map<String, List<Element>> map = elements.stream()
.collect(Collectors.groupingBy(e -> ((EmpKey) e.getObjectKey()).getTenantId()));
关于java - 从对象列表到基于 Java 8 或 Guava 的键和值对对象进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44705363/