簡體   English   中英

如何比較 Java 中不同類型的兩個列表?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM