Streams - kleinstes Element finden

Diskutiere Streams - kleinstes Element finden im Java Basics - Anfänger-Themen Bereich.
S

stefan_jj

Hallo liebe Community,

ich habe folgendes Problem. Ich möchte den User mit dem kürzesten Namen in einem Stream finden und ausgeben.

Java:
public Optional<User> getOwnerWithShortestName() {
        Optional<User> User = this.stream().map(a -> a.getUser().getDisplayName()).min(String::compareTo);
        return UserWithShortestName;
    }
Ich bekomme leider folgende Fehlermeldung.
"Type mismatch: cannot convert from Optional<String> to Optional<Data.Owner>"

Ich verstehe leider noch nicht ganz, wie ich hier richtig vergleichen kann. Ich hoffe ihr könnt mir helfen.

Danke und lg
 
mrBrown

mrBrown

map(a -> a.getUser().getDisplayName()) macht aus dem Stream einen Stream<String>, du versuchst das aber einem Stream<User> zuzuweisen.

Du solltest auf das map verzichten, und stattdessen einen Comparator übergeben, der direkt zwei User vergleichen kann.
 
S

stefan_jj

Ah ok verstehe.
Ich möchte aber den User ausgeben, nicht den Namen.
dh.


Java:
public Optional<Owner> getOwnerWithShortestName() {
        // TODO: return the owner with the shortest name that asked a question
        Optional<Owner> OwnerWithShortestName = this.stream().map(a -> a.getOwner()).min(Comparator.comparing(a -> a ??));
        return OwnerWithShortestName;
    }
nur wie kann ich den Comparator nutzen?
 
mrBrown

mrBrown

Kommt drauf an was Owner ist und wie man von da an den Namen kommt, irgendwas in die Richtung von Comparator.comparing(Owner::getDisplayName)
 
S

stefan_jj

Ach mein Gott Danke!!!!
Ich hatte eine falsche Syntax beim Comparator. Konnte es lösen. thx
 
Thema: 

Streams - kleinstes Element finden

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben