java - ArrayList 全部移除

标签 java arraylist

我有以下数组列表:

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 有一个返回 StringgetId() 方法。


对于 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/

相关文章:

java - 具有超过 4680 个元素的 ArrayList 返回空白

java - 在Java中查找ArrayList中两个索引之间的最大值

Java - 根据属性在数组列表中排序

java - ArrayList 在运行方法后不会返回修改后的值

javascript - 如何使用 Spring 响应下载 excel 文件

java - 基于 MVC 在 jsp/servlet 应用程序中设置连接池?

java - 是否可以在java中构建时添加注释?

java - 在打印期间跳过 ArrayList 的特定值

java - 将 ExtentTest 的默认值设置为 FAILED

java - 将字节转换为整数时的问题(特定于 Java?)