Arrays.stream Java

Arrays.stream() ist eine Methode in Java, die speziell dafür verwendet wird, Arrays in Streams umzuwandeln. Es gehört zur java.util.Arrays-Klasse und bietet eine einfache Möglichkeit, auf die Stream-API zuzugreifen, um Operationen auf Arrays durchzuführen.

Verwendung von Arrays.stream()

Je nach Array-Typ gibt es verschiedene Varianten der Arrays.stream()-Methode:

Arrays.stream(T[] array): Erzeugt einen Stream aus einem Array von Objekten.
Arrays.stream(int[] array): Erzeugt einen IntStream aus einem Array von int.
Arrays.stream(long[] array): Erzeugt einen LongStream aus einem Array von long.
Arrays.stream(double[] array): Erzeugt einen DoubleStream aus einem Array von double.

Häufige Operationen mit Arrays.stream Java

Eine Zeile mit Integern einlesen und in einem Array speichern:

int[] intArray = Arrays.stream(scanner.nextLine().split("\\s+"))
                .mapToInt(Integer::parseInt)
                .toArray();

Filtern und Sammeln in eine Liste:

String[] names = {"John", "Jane", "Doe", "Jack"};

List<String> filteredNames = Arrays.stream(names)
    .filter(name -> name.startsWith("J"))
    .collect(Collectors.toList());

Sortieren eines String-Arrays:

String[] names = {"John", "Jane", "Doe", "Jack"};
String[] sortedNames = Arrays.stream(names)
                             .sorted()  // Sortiert die Elemente alphabetisch
                             .toArray(String[]::new);  
                                       // Wandelt den Stream zurück in ein String-Array

System.out.println(Arrays.toString(sortedNames));  // Ausgabe: [Doe, Jack, Jane, John]

Eine Zeile mit Integern einlesen und in LinkedHashSet speichern:

LinkedHashSet<Integer> firstPlayer =
              Arrays.stream(scanner.nextLine().split("\\s+"))
                    .map(Integer::parseInt)
                    .collect(Collectors.toCollection(LinkedHashSet::new));

Average von List Elementen, Average von Map List Elementen:

for (var mapPair : mapName.entrySet()) {

String key = mapPair.getKey();

String numElements = mapPair.getValue().stream()
                      .map(g -> String.format("%.2f", g))
                      .collect(Collectors.joining(" "));

double avg = mapPair.getValue().stream()
                              .mapToDouble(g -> g)
                              .average()
                              .getAsDouble();         // can lead to rounding diffs 

System.out.println(String.format("%s -> %s (avg: %.2f)", key, numElements, avg));

}

Arrays.stream() ist eine praktische Methode, um Arrays in Streams zu konvertieren und so die Leistungsfähigkeit der Java Stream-API zu nutzen. Objekte oder primitive Arrays können einfach in Streams umgewandelt werden, um komplexe Operationen wie Filtern, Sortieren, Mapping und Aggregation durchzuführen. Diese Funktion macht den Code nicht nur kompakter, sondern auch leichter verständlich und wartbar.

error: Content is protected !!