【发布时间】:2023-03-27 18:08:01
【问题描述】:
我需要过滤一个 ArrayList 并删除找到的元素。作为 Java 的新手,我想知道实现这一目标的最有效方法是什么(很重要,因为它在移动设备上运行)。目前我这样做:
// We display only top-level dealers (parentId=-10)
ArrayList<DealerProductCount> subDealers = new ArrayList<DealerProductCount>();
for (DealerProductCount dealer : wsResponse.Dealers) {
if (dealer.ParentId != -10) subDealers.add(dealer);
}
wsResponse.Dealers.removeAll(subDealers);
可以在没有临时对象的情况下完成吗?也许通过直接操作(删除)被迭代列表的元素?
【问题讨论】:
-
还有其他数据结构可以更有效地删除项目。从 LinkedList 中删除将具有 O(n) 性能。从 HashMap 中删除将具有恒定的时间性能。