我有以下数组列表:
ArrayList<Obj o> list1 = new ArrayList<>();
ArrayList<String> list2 = new ArrayList<>();
我想从 list1 中删除所有元素,这些元素的 (string)ID 等于 list2 中的元素。
if(o.getId().equals(one of the strings from list2)) -> remove.
我怎样才能使用 removeAll 或其他方式做到这一点,而不必编写额外的 for。我正在寻找执行此操作的最佳方法。
提前致谢。
最佳答案
如果您使用的是 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
有一个返回 String
的 getId()
方法。
对于 java 7,使用 iterator
是可行的方法:
Iterator<YourClass> iterator = list1.iterator();
while (iterator.hasNext()) {
if (list2.contains(iterator.next().getId())) {
iterator.remove();
}
}
关于java - ArrayList 全部移除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46055463/