Dies ist eine Art Follow-up zu einer anderen Frage (Reuse code for looping through multidimensional-array), in der mein spezifisches Problem gelöst wurde, indem das Befehlsmuster verwendet wurde. Mein Problem war, dass ich mehrere Methoden hatte, Operationen für jedes Element eines zweidimensionalen Arrays auszuführen - und daher viel doppelten Code. Stattdessen viele Methoden, wie so von mit ...Wie könnte das Befehlsmuster durch Lambda-Ausdrücke ersetzt werden?
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];
}
}
}
... ich es so gelöst:
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];
}
});
}
Wenn wir nun Lambda-Ausdrücke in Java haben, wie dies verkürzt werden könnte? Wie würde das im Allgemeinen aussehen? (Sorry für mein schlechtes Englisch)
Vielen Dank für Ihre Antwort. Kannst du erklären, was die "Arrays.stream" -Methode tut? – subarachnid
Es gibt nur [Stream] (http://lambdadoc.net/api/index.html?java/util/stream/Stream.html) :) Sie können [versuchen] (http://jdk8.java.net/ download.html) selbst. – aim