Angenommen, du hast ein ArrayList (Integer) namens nums mit irgendwelchen ganzzahligen Werten.
Aller Integer-Werte in der ArrayList werden mit zwei multipliziert. (Der Name kann frei gewählt werden. Bei mir heißt er halt n. Die Hauptsache ist, dass links und rechts vom Pfeil derselbe Name steht).
Java:
nums.replaceAll(n -> n *2);
Anderes Beispiel (hier werden alle Integer-Werte entfernt, die negativ sind. Hierzu wird geschaut, ob die Bedingung wahr ist. Die Bedingung steht rechts vom Pfeil):
Java:
nums.removeIf(n -> n <0);
Als nächstes zeige ich dir, wie das mit streams gegangen wäre.
nums = nums.stream().map(n -> n *2).collect(Collectors.toList());
Alle Werte entfernen, die negativ sind (hier muss man anders herum denken. Ich sage dem Program: ,,Hole nur die, die gleich Null sind oder positiv sind):
Java:
nums = nums.stream().filter(n -> n >=0).collect(Collectors.toList());
Alles in einer Zeile:
Java:
nums = nums.stream().map(n -> n *2).filter(n -> n >=0).collect(Collectors.toList());
bzw.
Java:
nums = nums.stream().map(n -> n *2).filter(n -> n >=0).collect(Collectors.toList());
nums = nums.stream().map(n -> n *2).collect(Collectors.toList());
Alle Werte entfernen, die negativ sind (hier muss man anders herum denken. Ich sage dem Program: ,,Hole nur die, die gleich Null sind oder positiv sind):
Java:
nums = nums.stream().filter(n -> n >=0).collect(Collectors.toList());
Alles in einer Zeile:
Java:
nums = nums.stream().map(n -> n *2).filter(n -> n >=0).collect(Collectors.toList());
bzw.
Java:
nums = nums.stream().map(n -> n *2).filter(n -> n >=0).collect(Collectors.toList());
Naja man könnte es ja etwas aufsplitten, gibt es eine Möglichkeit mit einem Stream ein Array nach den Fehlenden Zahlen zu Matchen? also folgendes Beispiel:
Java:
Gegeben ist ein Array welches Zahlen von 0-5 enthält, jedoch hat es zwei -1Einträge.DerStream soll jetzt nach den fehlenden Zahlen suchen und diese in ein Array speichern.BeispielArray:int[] numbers ={0,-1,5,3,-1};
Weiß ich nicht. Ich hätte es mit ArrayList gelöst.
Java:
importjava.util.ArrayList;publicclassHauptprogramm{publicstaticvoidmain(String[] args){int[] numbers ={0,-1,4,3,-1};ArrayList<Integer> nums =newArrayList<>();for(int i =0; i < numbers.length; i++){
nums.add(numbers[i]);}System.out.println("Fehlende Zahlen:");for(int i =0; i < numbers.length; i++){if(!nums.contains(i)){System.out.println(i);}}}}
Weiß ich nicht. Ich hätte das es mit ArrayList gelöst.
Java:
importjava.util.ArrayList;publicclassHauptprogramm{publicstaticvoidmain(String[] args){int[] numbers ={0,-1,4,3,-1};ArrayList<Integer> nums =newArrayList<>();for(int i =0; i < numbers.length; i++){
nums.add(numbers[i]);}System.out.println("Fehlende Zahlen:");for(int i =0; i < numbers.length; i++){if(!nums.contains(i)){System.out.println(i);}}}}
Das ist mit einer ArrayList geht war mir klar xD Ich hatte mir nur die Frage gestellt wozu streams den dienen, da man alles was ein stream macht auch iterativ lösen kann xD
Sorry ich bin etwas müde, ist ja auch relativ egal wie viele Elemente es sind, ich hatte mich nur gefragt ob es alternativ zu schleifen und ArrayLists gibt xD Naja scheint nicht so
Das beispiel von @lennero ist mMn sowieso ein How-Not-To Streams. Hier wäre ein Loop sicher einfacher. Aber das Stand ja hier nicht zur Frage von dem her keine harte Kritik
Das beispiel von @lennero ist mMn sowieso ein How-Not-To Streams. Hier wäre ein Loop sicher einfacher. Aber das Stand ja hier nicht zur Frage von dem her keine harte Kritik