如何比较 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>
可能更好)。
我有两个列表:
第一个列表是包含一个 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>
可能更好)。