Jest to swego rodzaju kontynuacja innego pytania (Reuse code for looping through multidimensional-array), w którym mój konkretny problem został rozwiązany za pomocą wzorca polecenia. Mój problem polegał na tym, że miałem wiele metod wykonywania operacji na każdym elemencie dwuwymiarowej tablicy - a zatem wiele duplikatów kodu. Zamiast wielu metod, takich jak tak ...W jaki sposób wzór polecenia można zastąpić wyrażeniami lambda?
void method() {
for (int i = 0; i < foo.length; i++) {
for (int j = 0; j < foo[i].length; j++) {
// perform specific actions on foo[i][j];
}
}
}
... Rozwiązałem to tak:
interface Command {
void execute(int i, int j);
}
void forEach(Command c) {
for (int i = 0; i < foo.length; i++) {
for (int j = 0; j < foo[i].length; j++) {
c.execute(i, j);
}
}
}
void method() {
forEach(new Command() {
public void execute(int i, int j) {
// perform specific actions on foo[i][j];
}
});
}
Teraz gdybyśmy mieli wyrażeń lambda w Java, jak to może być skrócona? Jak by to wyglądało w ogóle? (Przepraszam za mój słaby angielski)
Dziękuję bardzo za odpowiedź. Czy możesz wyjaśnić, co robi metoda "Arrays.stream"? – subarachnid
Po prostu zwraca [Stream] (http://lambdadoc.net/api/index.html?java/util/stream/Stream.html) :) Możesz [spróbować] (http://jdk8.java.net/ download.html) siebie. – aim