如何.count() list.stream() 的子对象?

Pfi*_*nnn -2 java mapping collections java-8 java-stream

public static int amountKurse (List<Studie> lstd) {
    int result = (int) lstd.stream().map(Studie::getKurse).count();
    return result;
}

private Map<Kurs,Integer> kurse = new HashMap<>();

public Set<Kurs> getKurse(){
    return kurse.keySet();
}
Run Code Online (Sandbox Code Playgroud)

我想计算Kurse我所有Studie对象中的数量。我目前的结果是20,什么时候应该是132 我猜我的功能只是计算数量Studie 将不胜感激这方面的一些帮助。

Era*_*ran 5

如果getKurse()返回 aSet并且您想计算所有这些Sets的元素总数,请使用:

int result = (int) lstd.stream().flatMap(s -> s.getKurse().stream()).count();
Run Code Online (Sandbox Code Playgroud)

或者,如果您想避免计算重复项:

int result = (int) lstd.stream().flatMap(s -> s.getKurse().stream()).distinct().count();
Run Code Online (Sandbox Code Playgroud)