如何比较 Java 中两个不同类型的列表?

How to i compare two lists of different types in Java?

我有两个列表:

第一个列表是包含一个 int 和一个 String 的 MyObject 列表:

List<MyObject> myObjList = new ArrayList<>();

myObjList.add(new MyObject(1, "Frank"));
myObjList.add(new MyObject(2, "Bob"));
myObjList.add(new MyObject(3, "Nick"));
myObjList.add(new MyObject(4, "Brian"));

第二个列表只是一个字符串列表:

List<String> personList = new ArrayList<>();
    
personList.add("Nick");

我想将字符串列表 (personList) 与 MyObject 列表中的字符串 (myObjectList) 和 return 包含所有匹配项的 id 列表。所以在考试中它应该 return 一个只包含 Nicks id -> 3 的列表。我该怎么做?

更新:

要获取 ID 列表,我只是说:

myObjectList.stream()
.filter(mo -> personList.contains(mo.id))
.map(MyObject::id)
.collect(Collectors.toList());

我不完全清楚你想要哪条路,但如果你想要 personList 中的元素,它们是 myObjList 中元素的 id:

personList.stream()
    .filter(s -> myObjList.stream().anyMatch(mo -> mo.id.equals(s)))
    .collect(Collectors.toList());

或者,如果您想要 myObjList 中的元素,其 id 在 personList 中:

myObjectList.stream()
    .filter(mo -> personList.contains(mo.id))
    .collect(Collectors.toList());

(在后一种情况下,personList 成为 Set<String> 可能更好)。