我有以下的ArrayList:ArrayList中的removeAll
ArrayList<Obj o> list1 = new ArrayList<>();
ArrayList<String> list2 = new ArrayList<>();
我想删除所有从列表1中的元素的有(串)的ID等于从list2中的元素。我怎样才能用removeAll或其他方式做到这一点,而无需额外编写一个。我正在寻找最佳的方式来做到这一点。
预先感谢您。
我有以下的ArrayList:ArrayList中的removeAll
ArrayList<Obj o> list1 = new ArrayList<>();
ArrayList<String> list2 = new ArrayList<>();
我想删除所有从列表1中的元素的有(串)的ID等于从list2中的元素。我怎样才能用removeAll或其他方式做到这一点,而无需额外编写一个。我正在寻找最佳的方式来做到这一点。
预先感谢您。
如果您使用的是Java 8,你可以这样做:
ArrayList<YourClass> list1 = new ArrayList<>();
ArrayList<String> list2 = new ArrayList<>();
list1.removeIf(item -> list2.contains(item.getId()));
// now list1 contains objects whose id is not in list2
假设YourClass
有getId()
方法返回一个String
。
对于Java 7,使用iterator
是要走的路:我认为,即使内部的removeAll使用循环
Iterator<YourClass> iterator = list1.iterator();
while (iterator.hasNext()) {
if (list2.contains(iterator.next().getId())) {
iterator.remove();
}
}
,所以我不认为你会得到任何比'更好( Iterator it = list1.iterator(); it.hasNext();){if(list2.contains(it.next()。getId())it.remove();}' – daniu