这样的PHP中有一个函数
function array_walk(array &$array, callable $callback, $userdata = null): bool {}
我想在Java中使用此方法。任何人都可以帮助我吗?
例如,我想将此函数转换为Java
array_walk($result, function (&$value, $key) {
$value = sprintf('%s/%s', $key, $value);
});
答案 0 :(得分:3)
我已经在W3C搜索了这个方法做了什么,我可以清楚地说,为此目的,Java 8 Stream API使用forEach()
代替:
String[] a = {"blue", "red"};
Stream.of(a).forEach(i -> System.out.println("This is a " + i + " color."));
结果:
This is a blue color.
This is a red color.
您还可以使用@FunctionalInterface实现您想要的功能。但是你不能使用它,因为你被困在Java 7及更早版本中。在这种情况下,您必须使用普通的for-loop
或自己的类和@Override
实现:
public class ArrayWalker<T> {
T[] t;
public ArrayWalker(T[] t) {
this.t = t;
}
public void function(T t) {}
public ArrayWalker<T> walk() {
for (int i=0; i<t.length; i++) {
function(t[i]);
}
return this;
}
}
用法:
new ArrayWalker<String>(array) {
@Override
public void function(String str) {
System.out.println("This is a " + str + " color.");
}
}.walk();
它将产生与上例相同的输出。