У меня есть две коллекции. Во-первых, Arraylist of Objects, где каждый объект имеет имя и UUID в качестве переменных. Вторая коллекция - Arraylist UUID. Каков наилучший способ сохранить элементы в первом массиве, где UUID первого массива являются частью второго массива UUID?
Example example1 = new Example();
example1.setUuid(uuid1);
Example example2 = new Example();
example2.setUuid(uuid2);
Example example3 = new Example();
example3.setUuid(uuid3);
Example example4 = new Example();
example4.setUuid(uuid4);
Example example5 = new Example();
example5.setUuid(uuid5);
List<Example> exampleList = new ArrayList<>();
exampleList.add(example1);
exampleList.add(example2);
exampleList.add(example3);
exampleList.add(example4);
exampleList.add(example5);
List<UUID> uuidList = new ArrayList<>();
uuidList.add(uuid1);
uuidList.add(uuid2);
uuidList.add(uuid3);
Каков наилучший способ сохранить элементы в exampleList, содержащем только UUID из uuidList, которые представляют собой uuid1, uuid2, uuid3, без использования a для l oop? Было бы здорово использовать поток и фильтр, но я не смог это понять.
final List<Example> finalList = exampleList
.stream()
.filter(x -> !uuidList.contains(x))
.collect(Collectors.toList());
Но в данный момент это не работает, и я получаю жалобу от компилятор, который uuidList не является окончательным. Каков наилучший способ реализовать это, что не так в моей реализации?
ОБНОВЛЕНИЕ: Минимальное воспроизводимое Пример:
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.UUID;
import java.util.stream.Collectors;
public class HelloWorld{
static class Example {
UUID uuid;
void setUuid(UUID uuid){
this.uuid = uuid;
}
UUID getUuid(){
return this.uuid;
}
}
public static void main(String []args){
Example example1 = new Example();
example1.setUuid(UUID.fromString("69320518-585f-43c8-a935-b6e0438042b7"));
Example example2 = new Example();
example2.setUuid(UUID.fromString("69320518-585f-43c8-a935-b6e0438043b7"));
Example example3 = new Example();
example3.setUuid(UUID.fromString("69320518-585f-43c8-a935-b6e0438044b7"));
Example example4 = new Example();
example4.setUuid(UUID.fromString("69320518-585f-43c8-a935-b6e0438045b7"));
Example example5 = new Example();
example5.setUuid(UUID.fromString("69320518-585f-43c8-a935-b6e0438046b7"));
List<Example> exampleList = new ArrayList<>();
exampleList.add(example1);
exampleList.add(example2);
exampleList.add(example3);
exampleList.add(example4);
exampleList.add(example5);
List<UUID> uuidList = new ArrayList<>();
uuidList.add(UUID.fromString("69320518-585f-43c8-a935-b6e0438047b7"));
uuidList.add(UUID.fromString("69320518-585f-43c8-a935-b6e0438048b7"));
uuidList.add(UUID.fromString("69320518-585f-43c8-a935-b6e0438049b7"));
final List<Example> finalList = exampleList
.stream()
.filter(x -> !uuidList.contains(x.getUuid()))
.collect(Collectors.toList());
System.out.println(finalList);
}
}