在多个类的数组中从同一个类中删除对象的简洁方法

Ale*_*tes 0 java

假设我有一个包含以下元素的数组:

List<Object> objects = new ArrayList<>();
objects.add(1);
objects.add("one");
objects.add("two");
objects.add(new Object());
objects.add(2);
Run Code Online (Sandbox Code Playgroud)

删除同一类别的某些对象有减少的方法吗?

例如,如果我只想删除字符串,我知道我可以这样做:

for (Iterator<Object> it = objects.iterator(); it.hasNext();){
    if(it.next() instanceof String) {
        it.remove();
    }
}
Run Code Online (Sandbox Code Playgroud)

但这是最简单的方法吗?我想我可以做到,java-8但我不太确定.谢谢!

dim*_*414 6

在Java 8中,您可以使用Collection.removeIf():

objects.removeIf(obj -> obj instanceof String);
Run Code Online (Sandbox Code Playgroud)

它仍然是O(n),但它更具可读性.