Ich versuche, eine eindeutige Liste zu erstellen. Ich kann kein "Set" verwenden, da ich einige der Werte zuweisen muss, während ich es iteriere.Was ist der beste Weg, um eine Liste von "einzigartigen" Objekten in Java zu erstellen
Im Moment mache ich das, um eine einzigartige Liste zu erstellen. Kennt jemand einen besseren Weg?
List<Thing> things = previousThings.stream()
.collect(Collectors.toSet()).stream()
.collect(Collectors.toList());
Ich dachte, dass, wenn ich es zu einem Set und der Rückseite zu einer Liste umwande, es doppelte Einträge beseitigen würde. Ich denke, es muss eine Liste sein, damit ich "List.set (..)" verwenden kann, um zu aktualisieren, was möglicherweise bereits in meinem Repository ist.
for(int i = 0; i < things.size(); i++) {
if(things.get(i).id == null) {
existingThing = thingRepository.getByName(things.get(i).getName());
if(existingThing != null) {
things.set(i, existingThing);
} else {
things.set(i, thingRepository.save(things.get(i));
}
}
}
Ersetzen '.collect (Collectors.toSet()). Strom()' 'mit .distinct()' –
, die normalerweise funktionieren würde, aber ich sollte erwähnt habe, dass ich eine andere Methode als die verwenden müssen .equals() für den Vergleich, da id verwendet wird und ich nach eindeutigen Namen suche. Gibt es eine ähnliche Methode, mit der Sie ein Lambda zum Vergleich bereitstellen können? @LouisWasserman –
Was nennst du "einzigartig"? Basierend auf der Methode 'equals()'? Sind sie unveränderlich? – lvr123