我很了解collect() 方法和Collectors 对象。然而,我真的不明白为什么使用reduce来填充集合是不好的。
` 用户 u1 = 新用户(“汤姆”);
用户 u2 = 新用户(“安娜”);
用户 u3 = 新用户(“爱丽丝”);
BiFunction<Set<String>, User, Set<String>> accumulator = (acc, u) -> {
acc.add(u.getLogin());
return acc;
};
BinaryOperator<Set<String>> combiner = (s1, s2) -> {
s1.addAll(s2);
return s2;
};
Stream<User> stream = Stream.of(u1, u2, u3);
Set<String> logins = new HashSet<>();
stream.reduce(logins, accumulator, combiner);
System.out.println(logins);// [Tom, Alice, Anna]`
Run Code Online (Sandbox Code Playgroud)
这是糟糕的代码设计,还是幕后的其他原因?
累积应该在不可变对象上进行吗?