Java 8 Lamda ausdrücke

Hallo Community,
ich habe ein kleines Problem mit Lamdaausdrücken & zwar habe ich eine abstrakte Klasse (AbstractKunde) dann gibt es noch zwei Klassen (Privatkunde, Firmenkunde).

Jetzt möchte ich mit einem Lamdaausdruck meine Kunden (die in einer Liste sind) prüfen ob sie Firmenkunden sind oder Privatkunde & dementsprechend in eine weitere Liste (jeweils für Privatkunden & Firmenkunden) zwischenspeichern.


Java:
kunden.forEach(element -> element.getClass().getName() == "Firmenkunde" ?
                firmenkunden.add((Firmenkunde) element) : privatkunden.add((Privatkunde) element)));

Das wäre mein Ansatz, aber Netbeans gibt mir ein Fehler aus, dass es keinen Rückgabewert hat.
Wo ist mein Fehler ?

Danke für eure Hilfe !
 
Streaming API und so:
Java:
List<AbstractCustomer> customers = ...;
Map<Class<?>, List<AbstractCustomer>> collect = customers.stream().collect(Collectors.groupingBy(Object::getClass));
System.out.println(collect);
System.out.println(collect.get(BusinessCustomer.class).size());
System.out.println(collect.get(PrivateCustomer.class).size());
 
Mhh, danke für deine Hilfe. Werde mich mal nochmal belesen, habt nämlich Probleme damit etwas konkret etwas anzufangen. Bin noch anfänger. Trozdem vielen Dank für die Schlagwörter und das bsp !
 
Habe es jetzt mal auf meine Beispiel angewandt. Wäre es möglich, wenn mir einer diesen Codestück erklärt. Wo sieht man, dass es in meine Liste gespeichert wird ?

Sry für die doofe Frage, aber das verwirrt mich :/

Java:
Map<Class<?>, List<AbstractKunde>> collect;
        collect = kunden.stream().collect(Collectors.groupingBy(Object::getClass));
 
Man sollte als Anfänger mit den Grundlagen beginnen. Variablen, Methoden, Klassen, OOP, (Design Patterns). Wenn man sich mal mit dem auskennt, dann sind Lambdaausdrücke und die Streaming API ein Klacks.

Zur Erläuterung: aus der Liste kunden wird ein Stream erzeugt, der dann aufgesammelt (collect) wird. In diesem Sammler werden die einzelnen Objekte nach ihrer Klasse in eine Map einsortiert. Das heißt die Elemente der selben Klasse sind dann in der Liste eingeordnet, die dem Schlüssel (die Klasse selbst) zugeordnet sind.
 
Methoden, Klassen, OOP ist kein Problem. Bin gerade an Design Patterns dran und will mich in die Lambda ausdrücke einarbeiten, da sie einfach kürzer und leserlicher sind, wenn man sie versteht, denke ich !

Danke dir für die Erklärung !
 
Methoden, Klassen, OOP ist kein Problem. Bin gerade an Design Patterns dran und will mich in die Lambda ausdrücke einarbeiten, da sie einfach kürzer und leserlicher sind, wenn man sie versteht, denke ich !

Danke dir für die Erklärung !
Ohne dir zu Nahe treten zu wollen:
- In deinem ersten Beitrag oben vergleichst du Strings mit ==
- du benutzt eine Funktion mit Rückgabewert aber gibst keinen zurück
- deine Fehleranalyse ist: Netbeans meldet da n Fehler

Dir fehlen definitiv Grundlagen. Was Lambdas mit Design-Patterns zu tun haben weiß ich auch nicht.
 
Ohne dir zu Nahe treten zu wollen:
- In deinem ersten Beitrag oben vergleichst du Strings mit ==
- du benutzt eine Funktion mit Rückgabewert aber gibst keinen zurück
- deine Fehleranalyse ist: Netbeans meldet da n Fehler

Dir fehlen definitiv Grundlagen. Was Lambdas mit Design-Patterns zu tun haben weiß ich auch nicht.

Danke dir, das du mein kurzes Bsp, kritisierst. Das man so normalerweiße keine Strings vergleicht ist mir bewusst. Aber wie du selbst gemerkt hast, versteht man was ich damit ausdrücken wollte. Hatte keine lust fur das bsp. noch eine Equals methode mit zu posten !

Also nochmals vielen dank für deine Hilfe !
 
Danke dir, das du mein kurzes Bsp, kritisierst. Das man so normalerweiße keine Strings vergleicht ist mir bewusst. Aber wie du selbst gemerkt hast, versteht man was ich damit ausdrücken wollte. Hatte keine lust fur das bsp. noch eine Equals methode mit zu posten !

Solche Codestücke am Besten immer mit dem Titel Pseudocode versehen 😉 dann weiß man gleich das der folgende nicht zu 100% richtig sein muss.
 
Ok, tut mir leid. Wie gesagt ich bin neu hier und komme von einer anderen Programmiersprach, würde mich aber dennoch als Anfänger bezeichnen. Ich versuche die nächsten Threads darauf zu achten, das es entweder der orginale Code ist oder mit einem Hinweis versehen wird.
 

Neue Themen


Zurück
Oben