Java 8 füllen, array mit Lieferanten
Ist es ein Weg zu füllen ein array mit java 8 Lieferant
?
Möchte ich schreiben:
Supplier<Object> supplier = () -> new Object();
Object[] array = new Object[size];
Arrays.fill(array, supplier);
Hinweis:
Ich weiß, ich könnte schreiben, dass meine eigene Methode.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In dem Fall, wenn Sie möchten, füllen bereits vorhandenen array mit Daten von Lieferanten sehen Antwort geschrieben von Stuart Marks, oder verwenden Sie kreative Lösung von @Hogler ist Kommentar:
In den Fall, Sie haben kein problem mit die Schaffung neuer array gefüllt mit Ergebnissen, die von Lieferanten, die Sie verwenden können
Für verschiedene Arten, als
Object
können SietoArray(IntFunction<YourType[]> generator);
wietoArray(YourType[]::new)
(credits wieder an @Holger).Object
aber was ist, wenn ich verwenden möchten, eine andere Art, wieInteger
oderDate
?MyType
verwendentoArray(MyType[]::new)
Arrays.asList(array).replaceAll(x->supplier.get());
. Sie können auch überschreiben Sie einen Bereich mithilfe vonsubList
.In
java.util.Arrays
es istDiese nicht ein Lieferant, sondern es dauert eine
IntFunction
deren input-argument ist der index des Arrays gefüllt. Wenn Sie Ihre Objekte nicht abhängig von der Ziel-array-index, können Sie ignorieren die parameter und rufen Sie ein Anbieter wie dieser:Gibt es überladungen für arrays von primitiven als auch als arrays von Referenz-Typ. Es gibt auch eine entsprechende Familie von Methoden
parallelSetAll()
dass die gleiche Sache, außer in parallel. (Es nutzt streams intern.)Könnten Sie leicht Ihre eigenen schreiben:
Alternative zu Pshemo die Lösung, die Sie nutzen könnten map-Methode.