java - Collectors.groupingBy 基于嵌套静态类属性

标签 java java-8 java-stream

我有一个College具有嵌套静态类的类 Dept

学院

class College {
private String collegeName;

private Dept dept;

public Dept getDept() {
    return dept;
}

public void setDept(Dept dept) {
    this.dept = dept;
}

public String getCollegeName() {
    return CollegeName;
}

public void setCollegeName(String collegeName) {
    CollegeName = collegeName;
}

public static class Dept {

    private String deptName;

    public String getDeptName() {
        return deptName;
    }

    public void setDeptName(String deptName) {
        this.deptName = deptName;
        }

    }

 }

我有listCollege对象并试图 groupingBy基于deptName i,e (Map<String>, List<College>) ,但到目前为止还没有运气,它给出了编译错误消息

List<College> list = new ArrayList<College>();
list.stream().collect(Collectors.groupingBy(College.Dept::getDeptName));

编译错误

The method collect(Collector<? super College,A,R>) in the type Stream<College> is not applicable for the arguments (Collector<College.Dept,capture#1-of ?,Map<String,List<College.Dept>>>)

最佳答案

College.Dept::getName

Function<College.Dept, String> 。它不接受 College作为输入。

使用 lambda 构造 Function<College, String> :

groupingBy(c -> c.getDept().getName())

关于java - Collectors.groupingBy 基于嵌套静态类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54226369/

相关文章:

Java - 通过 URL 在 Google map 上显示多个目的地

java - 以不同的方法将操作附加到 Stream 是一种不好的做法吗?

java - 使用 Java 8 5 天编译用 Java 编写的旧程序

java-8 - Java 8 流和 RxJava 可观察量之间的区别

java - "Tag start is not closed"在 XML 元素的开始和结束标记内注释时

java - Java 中的内部 block 如何访问应该超出范围的局部变量? (JVM 如何处理 Java 中的最终局部变量)

java - 避免在 Java 中创建对象

Java 8 Lambda 函数抛出异常?

java - 使用 Java 8 Streams 的收集器来增加基于现有键/值对的值

java - 在 Java 中如何从 Stream<ArrayList<Object>>> 到 ArrayList<Object>?