gpt4 book ai didi

java - 从列表中删除具有空属性的对象的最有效方法

转载 作者:行者123 更新时间:2023-11-29 05:06:58 26 4
gpt4 key购买 nike

所以我想知道在 Java 中是否有更有效的方法来做到这一点?假设当前填充了对象列表...

for (Object obj : objects) {
if (obj.getAttribute() == null) {
objects.remove(obj);
}
}

本质上,如果列表中的对象包含特定的空属性,我只想能够从给定列表中删除任何对象。想法?

最佳答案

在 Java 8 中:

objects.removeIf(o -> o.getAttribute() == null);

在以前的版本中:

for (Iterator<MyObject> it = objects.iterator(); it.hasNext();) {
if (it.next().getAttribute() == null)
it.remove();
}

另见 Removing items from a collection in java while iterating over it . (您所展示的 for 循环可以抛出 ConcurrentModificationException 。)

这两个都更高效,因为它们允许集合以他们想要的方式进行迭代和删除,但我认为这不是< em>特别在这里很重要,除非你有一个巨大的 Collection 并且经常这样做。

作为这些可以如何变得更好的一个例子,问题显示的代码对于链表来说时间复杂度很低(我认为最坏的情况类似于 O(n<sup>2</sup>/2)),因为调用 objects.remove需要另一个遍历。使用Iterator让列表在不遍历的情况下进行删除。

使用 Iterator还是很穷ArrayList ,虽然,因为元素每次都会移动。 Java 8 版本是最好的。 ArrayList uses a BitSet 并一次完成所有转移。

关于java - 从列表中删除具有空属性的对象的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30089008/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com