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();