I would like to do a similar approach above in Java 8. I'm pythonist, here an example of what I need to do, but in Python.
def function1(x):
return x * 1
def function2(x):
return x * 2
def function3(x):
return x * 3
status = {"BOOK": function1,
"ISSUING": function2,
"RETRYING": function3}
for k, v in status.items():
print("status {0} call function {1}, \
result: {2}".format(k, v, v(2)))
How have the same effect or approach in Java 8? Please?
After @Guilheme help me above [SOLVED], I got this similar approach:
import java.util.HashMap;
import java.util.Map;
public class ExampleCallDifferentFunction {
public static int multiply1(int x) {
return x * 1;
}
public static int multiply2(int x) {
return x * 2;
}
public static int multiply3(int x) {
return x * 3;
}
interface Function {
int function(int x);
}
private static Map<String, Function> createMap() {
Map<String,Function> myMap = new HashMap<String,Function>();
myMap.put("BOOK", (x) -> multiply1(x));
myMap.put("ISSUING", (x) -> multiply2(x));
myMap.put("RETRYING",(x) -> multiply3(x));
return myMap;
}
public static void main(String[] args) {
Map<String, Function> status = createMap();
int x = 2;
for (Map.Entry<String, Function> entry : status.entrySet()) {
Function f = entry.getValue();
System.out.printf("status %s call %s result: %d\n", entry.getKey(), entry.getValue(), f.function(2));
}
}
}