簡體   English   中英

從列表中刪除另一個列表中不存在的所有對象

[英]Remove all objects from list that does not exist in another list

我有兩個清單

    List<Map<String,Object>> list1 =  new ArrayList<Map<String,Object>>();
    List<Map<String,Object>> list2 =  new ArrayList<Map<String,Object>>();

    HashMap<String, Object> hm = new HashMap<String, Object>();
    hm.put("1", new Long(1L));
    HashMap<String, Object> hm2 = new HashMap<String, Object>();
    hm2.put("2", new Long(2L));
    HashMap<String, Object> hm3 = new HashMap<String, Object>();
    hm3.put("3", new Long(3L));
    HashMap<String, Object> hm4 = new HashMap<String, Object>();
    hm4.put("4", new Long(4L));

    list1.add(hm);
    list1.add(hm2);
    list1.add(hm3);
    list1.add(hm4);

    HashMap<String, Object> hm1 = new HashMap<String, Object>();
    hm1.put("1", new Long(1L));
    HashMap<String, Object> hm5 = new HashMap<String, Object>();
    hm5.put("2", new Long(2L));

    list2.add(hm1);
    list2.add(hm5);

我想從list1中刪除另一個list2中不存在的所有對象
我的預期輸出是list1 -- [{2=2, 1=1}]

我可以通過list1迭代,並可以檢查元素是否存在然后什么都不做刪除元素。 但我想知道有更好的方法還是更簡單的代碼?

Collection.retainAll方法正是出於這個目的:

僅保留此集合中包含在指定集合中的元素。 換句話說,從此集合中刪除未包含在指定集合中的所有元素。

用法是:

list1.retainAll(list2);

然而,它可能不比天真的迭代方法更有效,除非你使用Set s而不是List s。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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