Если бы я вас правильно понял, ваше потоковое решение было бы примерно таким:
return findAll().stream()
.map(cps -> {cps.setFavorited(true); return cps;})
.distinct()
.collect(toList());
Или ваш setFavorited
мог бы вернуть this
, таким образом, разрешить цепочку:
public <Whatever> setFavorited(boolean flag){
this.favorited = flag;
return this;
}
Но вы должны быть очень осторожны с такими вещами, поскольку все, что вас волнует, это distinct
(что зависит от по крайней мере equals
).Реализация потока может обнаружить, что ваш equals
может быть основан на некоторых других свойствах, кроме favorited
, таким образом, он может, по крайней мере, теоретически полностью пропустить map
.Это, вероятно, надумано, но в java-9
это, например, оптимизация:
Stream.of(1,2,3)
.map(x -> x + 1)
.count();
Поскольку все, что вас волнует, это count
, map
пропущено.