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