我有两个清单
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);
我想从列表1中删除另一个列表2中不存在的所有对象,
我的预期输出是list1 -- [{2=2, 1=1}]
我可以遍历list1并可以检查元素是否存在,然后什么也不做就删除该元素。但是我想知道是否有更好的方法或更简单的代码?
该Collection.retainAll
方法正是出于该目的而存在:
仅保留此集合中包含在指定集合中的元素。换句话说,从此集合中删除所有未包含在指定集合中的元素。
用法是:
list1.retainAll(list2);
但是,除非您使用Set
s而不是List
s ,否则它可能不会比单纯的迭代方法更有效。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句