1082 Stimmen

Wie konvertiert man einen Java 8 Stream zu einem Array?

Was ist der einfachste/kürzeste Weg, einen Java 8 Stream in ein Array umzuwandeln?

6voto

Thomas Pliakas Punkte 99

Sie können einen benutzerdefinierten Collector erstellen, der einen Stream in ein Array konvertiert.

public static  Collector toArray( IntFunction converter )
{
    return Collectors.collectingAndThen( 
                  Collectors.toList(), 
                  list ->list.toArray( converter.apply( list.size() ) ) );
}

und eine schnelle Verwendung

List input = Arrays.asList( ..... );

String[] result = input.stream().
         .collect( CustomCollectors.**toArray**( String[]::new ) );

3voto

Kunda Punkte 451

Die Verwendung der Methode toArray(IntFunction generator) ist tatsächlich eine sehr elegante und sichere Möglichkeit, einen Stream in ein Array desselben Typs des Streams umzuwandeln (oder genauer gesagt zu sammeln).

Wenn jedoch der Typ des zurückgegebenen Arrays nicht wichtig ist, ist es einfacher und kürzer, einfach die Methode toArray() zu verwenden. Zum Beispiel:

    Stream args = Stream.of(BigDecimal.ONE, "Zwei", 3);
    System.out.printf("%s, %s, %s!", args.toArray());

1voto

Raj N Punkte 249
Stream stream = Stream.of(1, 2, 3, 4, 5, 6);

int[] arr = stream.mapToInt(x -> x.intValue()).toArray();

1voto

Sai Tata Punkte 51
// Erstellen Sie einen Stream von String-Elementen

Stream stringStream = Stream.of("A", "B", "C", "D", "E");

// Konvertieren Sie den Stream in ein Array von Strings

String[] stringArray = stringStream.toArray(String[]::new);

-1voto

     Stream stream = Stream.of(1, 2, 3, 4, 5, 6);

     Integer[] integers = stream.toArray(it->new Integer[it]);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X