java - 从对象列表到基于 Java 8 或 Guava 的键和值对对象进行分组

标签 java lambda java-8 guava

我期待将列表转换为 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/

相关文章:

c# - 在 C# 中使用 lambdas 对数组执行多个函数

Java 8 流执行

使用 lambda 的 List<> 的 Java8 子列表

java - TLS Android 的问题 - Netty

java - 可以确定 Java 比较器的进度吗?

c# - 如何转换表达式树?

Java 11 : Local-Variable Syntax for Lambda Parameters - applications

java - 如何在 Java 8 中使用子类进行方法链接

java - 自行设计类中的arraylist错误。请帮我

java - 接口(interface)中的默认方法