0
我想創建一個唯一的列表。我不能使用「Set」,因爲我需要在迭代它時指定一些值。什麼是在Java中創建「唯一」對象列表的最佳方式
現在我正在做這個來創建一個唯一的列表。有誰知道更好的方法?
List<Thing> things = previousThings.stream()
.collect(Collectors.toSet()).stream()
.collect(Collectors.toList());
我在想,如果我把它轉換成一個集合並返回列表,它會消除任何重複的條目。我認爲它需要是一個列表,以便我可以使用「List.set(..)」根據可能已存在於我的存儲庫中的內容進行更新。
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));
}
}
}
更換'.collect(Collectors.toSet())。流()'和'.distinct()' –
這將正常工作,但我應該提到,我需要使用比不同的方法.equals()進行比較,因爲它使用了id,我正在尋找唯一的名稱。有沒有類似的方法可以讓你提供一個lambda進行比較? @LouisWasserman –
你稱之爲「獨特」是什麼?基於equals()方法的對象?它們是不可變的嗎? – lvr123