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();
}
我想计算所有Kurse
对象中Studie
的数量。
我目前的结果是20
,应该是132
我猜我的函数只计算Studie
的数量
非常感谢您对此提供的帮助。
答案 0 :(得分:4)
如果getKurse()
返回一个Set
,并且您想计算所有这些Set
的元素总数,请使用:
int result = (int) lstd.stream().flatMap(s -> s.getKurse().stream()).count();
或者,如果您想避免计算重复次数:
int result = (int) lstd.stream().flatMap(s -> s.getKurse().stream()).distinct().count();
答案 1 :(得分:2)
使用flatMap
来将Studie
的流Kurse
转换为.count()
的流。然后只需int count = (int) lstd.stream() // Stream<Studie>
.map(Studie::getKurse) // Stream<Set<Kurse>>
.flatMap(Set::stream) // Stream<Kurse>
.count();
流中的项目:
class Program
{
public static void Main(string[] args)
{
List<string> dates = new List<string>();
string pattern = @"\b\d{2}.\d{2}.\d{4}\b";
Regex rgx = new Regex(pattern);
var sentence = "Lorem aaaa 12.01.2019 ffffffffdddddd hhhhhh 14.01.2019 nnnnnn ggg 15.01.2019 cxcccc ....";
var matches = rgx.Matches(sentence);
foreach (Match match in matches)
{
Console.WriteLine(match.Value);
}
Console.ReadLine();
}
}