![](/img/trans.png)
[英]Compare two Lists of different object types based on matching property in java 8
[英]How to i compare two lists of different types in Java?
我有兩個清單:
第一個列表是 MyObject 列表,其中包含一個 int 和一個 String:
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 )進行比較,並返回一個包含所有匹配項的 id 列表。 因此,在示例中,它應該返回一個僅包含 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>
可能會更好)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.