Java 如何计算list.stream()的.count()子对象? public static int amountKurse(列表lstd){ int result=(int)lstd.stream().map(Studie::getKurse.count(); 返回结果; } private Map kurse=new HashMap(); 公共集getKurse(){ 返回kurse.keySet(); }

Java 如何计算list.stream()的.count()子对象? public static int amountKurse(列表lstd){ int result=(int)lstd.stream().map(Studie::getKurse.count(); 返回结果; } private Map kurse=new HashMap(); 公共集getKurse(){ 返回kurse.keySet(); },java,collections,java-8,mapping,java-stream,Java,Collections,Java 8,Mapping,Java Stream,我想计算我所有Studie对象中Kurse的数量。 我当前的结果是20,而它应该是132 我猜我的功能只是计算Studie 如果getKurse()返回一个集合,并且要计算所有这些集合的元素总数,请使用: public static int amountKurse (List<Studie> lstd) { int result = (int) lstd.stream().map(Studie::getKurse).count(); return result; }

我想计算我所有
Studie
对象中
Kurse
的数量。 我当前的结果是
20
,而它应该是
132
我猜我的功能只是计算
Studie
如果
getKurse()
返回一个
集合
,并且要计算所有这些
集合
的元素总数,请使用:

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();
}
或者,如果要避免计算重复项,请执行以下操作:

int result = (int) lstd.stream().flatMap(s -> s.getKurse().stream()).count();

使用
flatMap
来学习
流到
Kurse流。然后简单地
.count()
流中的项目:

int result = (int) lstd.stream().flatMap(s -> s.getKurse().stream()).distinct().count();
int count=(int)lstd.stream()//stream
.map(Studie::getKurse)//流
.flatMap(Set::stream)//流
.count();

@Finnn否,
flatMap
转换为
(您最初的
map
尝试将
转换为
)。是否可以输出计数和打印每个对象?
int count = (int) lstd.stream()                // Stream<Studie>
                      .map(Studie::getKurse)   // Stream<Set<Kurse>>
                      .flatMap(Set::stream)    // Stream<Kurse>
                      .count();