I've been using the java 8 Streams for a while. I came across a situation where I need to stream through a List and pass each element to a static method along with another argument. Is it possible in java 8?
........
String designation = "Engineer";
List<String> names = new ArrayList<>();
names.add("ABC");
names.add("DEF");
names.add("GHI");
names.stream().map(MyClass::createReport);
..........
class MyClass {
public static void createReport(String name, String designation) {
System.out.println(name+"\t"+designation);
}
}
How can I pass the designation String via stream().map()?
Use a lambda expression:
names.stream().map(name -> MyClass.createReport(name,designation))...
You could write a curried version of the method createReport.
createReport
We need to swap the order of the arguments because the designation for each name is the same. Additionly we just need to call the not curried method.
Function<String, Consumer<String>> createReportCurry = (designation) -> (name) -> {
createReport(name, designation);
};
names.stream().forEach(createReportCurry.apply(designation))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With