Я использую Java 9. Я узнаю о таких операциях Stream, как collect () и lower () из этого урока от Baeldung, т.е. EUGEN PARASCHIV.
Я должен перечислить все имена сотрудников, разделенные запятой. Учебник использует collect () для этого. Но я могу сделать это с помощью Redu () и Collect (). Я видел несколько примеров, которые используют коллекцию только для помещения элементов в коллекцию, такую как List. Итак, как я могу узнать, когда использовать Reduce () или Collect ()?
private static Employee[] arrayOfEmps = {
new Employee(1, "Jeff Bezos", 100000.0),
new Employee(2, "Bill Gates", 200000.0),
new Employee(3, "Mark Zuckerberg", 300000.0)
};
public static void joiningDemo(){
//List all the employee names separated by a comma.
String fromReduce = empList.stream().map(Employee::getName).reduce("", (allNames, oneName) -> allNames + ", " + oneName);
fromReduce = fromReduce.substring(2);
String fromCollect = empList.stream().map(Employee::getName).collect(Collectors.joining(", "));
System.out.println("reduce : " + fromReduce);
System.out.println("collect : " + fromCollect);
}
ВЫХОД:
reduce : Jeff Bezos, Bill Gates, Mark Zuckerberg
collect : Jeff Bezos, Bill Gates, Mark Zuckerberg