我正在尝试创建一个唯一的列表。我不能使用“Set”,因为我需要在迭代时分配一些值。
现在我这样做是为了创建一个唯一的列表。有谁知道更好的方法吗?
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));
}
}
}
答案 0 :(得分:0)
我之前想过,我无法使用.distinct(),因为它使用的是基于'Thing.id'的.equals(),而某些'Things'没有'我还没有。然后我意识到,在forLoop的末尾,所有内容都被存储库分配了一个id。
List<Thing> things = previousThings;
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));
}
}
}
List<Thing> distinctThings = things.stream().distinct().collect(Collectors.toList);