Stream API, Anonyme Klasse

Diskutiere Stream API, Anonyme Klasse im AWT, Swing, JavaFX & SWT Bereich.
S

Sandro95

Guten abend leute,
ich komme bei Aufgabe 2.2 nicht weiter. Aufgabe 2.1 habe ich wie folgt gelöst.

import java.awt.List;
import java.util.ArrayList;
import java.util.Collection;

public class StreamAPI {

public static void main(String[] args) {

ArrayList list1 = new ArrayList();
list1.add(3);
list1.add(3);
list1.add(12);
list1.add(27);

System.out.println(sum(list1));



}

public static int sum(Collection<Integer> liste) {
return liste.stream().reduce(0,(a,b)-> a+b);

}


}
Nun soll ich das ganze anhand einer anonymen Klasse und der Stream API machen , leider bin ich dort iwie aus dem Konzept.. Könnte mir jmd vlt auf die Sprünge helfen ?

lg und danke im voraus!
 

Anhänge

J

JustNobody

Für was steht denn der Lambda Ausdruck?
Oder anders formuliert: Was für Parameter hat reduce?

Wenn du weisst, was da erwartet wird: wie kannst du das per anonymer Klasse übergeben?
 
J

JustNobody

Für was steht denn der Lambda Ausdruck? ⁴
Oder anders formuliert: Was für Parameter hat reduce?

Wenn du weisst, was da erwartet wird: wie kannst du das per anonymer Klasse übergeben?
 
J

JustNobody

Ahh, ok, das ist dann der 0 Uhr Effekt ... sorry für Doppelpost ... Forum reagierte irgendwie nicht ... aber dann habe ich das jetzt auch mal erleben dürfen :)
 
S

Sandro95

anonyme kalsse nfür zB ein EventHanlder weiß ich wie die gehen , aber hierbei bin ich iwie durcheinader , ich weiß nicht von welcher klasse ich eine anonyme erstellen soll
 
J

JustNobody

Nein, die Parameter hast du nicht richtig benannt. Wenn du https://docs.oracle.com/javase/8/do...l#reduce-T-java.util.function.BinaryOperator-
anschaust, dann siehst du, dass der erste Parameter T und der zweite BinaryOperator<T> ist.

T ist dabei der Typ, den du Streamst (also bei dir Integer)

Das (a,b) -> .... ist also ein Lambda Ausdruck für ein Interface. Wenn man das anschaut, dann findet man zwei Methoden. Da eine (andThen) eine default Implementation hat, haben wir ein funktionales Interface (Musste ja so sein, denn sonst wäre der Lambda Ausdruck nicht gegangen).

Also brauchen wir eine anonyme Klasse, die das Interface implementiert (BinaryOperator<Integer>).

Wenn du das vom EventHandler kennst: da hast du es auch gemacht, nur da war es dann ein XyzListener Interface .. also so ein Konstrukt wie new MouseListener() {...}

Reicht das für ein Verständnis und die Umsetzung der Aufgabe? Oder müsste man noch etwas mehr ins Detail gehen?

(Wäre aber bei mir dann erst nach dem Aufstehen ... für mich ist jetzt schlafenszeit ... und am Handy schreibt es sich auch nicht so gut ....)

Edit: BinaryOperator wurde an einer Stelle BinaryOperation was ich behoben habe.
 
S

Sandro95

Das reicht vollkommen ich danke dir ist mir jetzt wieder verständlicher geworden !
Gute nacht :)
 
Thema: 

Stream API, Anonyme Klasse

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben