for (Sample i : DATA) {
for(Sample ii : DATA){
if(i.getID() == ii.getID()){
// Do nothing.
}else {
i.addMatch(new Match(ii.getID()));
}
}
}
我有List<Sample>
,每个Sample
都包含List<Match>
。 List<Match>
是Samples
与另一个Sample
匹配的集合。因此,List<Match>
包含所有原始样本减去与之比较的样本。
Q1:汇总操作在这里有用吗?如果没有,我怎么知道他们什么时候?
Q2:如果是,那么编写它的适当方法是什么?
答案 0 :(得分:1)
Q1 :聚合操作在这里有用吗?如果没有,我怎么知道他们什么时候?
它们在您的情况下部分有用。如果你想迭代Collection
,最好使用老式的foreach循环,因为它没有创建Stream
管道的开销。但是你的内循环非常适合Stream
处理,因为你过滤并映射每个元素。
Q2 :如果是,那么编写它的适当方法是什么?
for (Sample sample : DATA) {
DATA.stream()
.mapToInt(Sample::getId).filter(id -> id != sample.getId()).mapToObj(Match::new)
.forEach(m -> sample.addMatch(m));
}