Sowas wie array_walk() in der API ?

Status
Nicht offen für weitere Antworten.

r2k

Mitglied
In PHP gibt es die array_walk(), mit der eine angegebene Funktion auf alle im Array enthaltenen Objekte angewendet wird. Gibt es in Java etwas vergleichbares für List, Set o.dgl.?

Vielen Dank
 
du kannst methoden auf ein Array bzw. List oder Set über die Collections bzw. Arrays Klassen.

Eine Methode der du eine Methode übergibst und sie wird auf jedes einzelne Element des arrays angwendet gibt es nicht
 
Jo, wozu auch - ist doch mit ner Schleife ruck zuck gemacht


Code:
Iterable<Typ> dada = .. //deine Daten

for(Typ value : dada){
    value.bla();
    
    // oder
    blub(value)
}
 
stevg hat gesagt.:
Jo, wozu auch - ist doch mit ner Schleife ruck zuck gemacht

Das ist schon richtig, aber mit Häufigkeit der Verwendung sucht man nach Verallgemeinerungen. Es wär halt schön, statt einigen Dutzend gleichartiger Schleifen nur eine Anweisung zu schreiben.
 
dann schreibn dir halt (einfacher callback)
Code:
interface Walker<T>{process(T t);}

walk(Walker<T> w, Iterable<T> coll){
     for (T t : coll){
         w.process(t);
     }
}
ist aber weder kürzer noch besser lesbar als for( : )
 
Schreib dir doch 'ne eigene Methode, dieser Befehl array_run() ruft bestimmt auch nur eine Methode mit einer Schleife auf
 
so vielleicht?

Code:
interface Walker<T>{process(T t);}

array_run(Walker<T> w, Iterable<T> coll){
     for (T t : coll){
         w.process(t);
     }
}

😀 :wink:
 
... man könnte es (für Memberfunktionen) in etwa so machen:

Code:
public static List listWalk( List list, Method methodOnItems ) throws ... {

  for( int i=0; i<list.size(); i++ ) {
    list.set( i, methodOnItems.invoke(list.get(i), null) );
  }
  return list;
}

Aber ich lasse es, es wird in der rufenden Prozedur mindestens soviel Schreibaufwand (die anzuwendenden Methoden sind keine Memberfunktionen).
:###
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben