【问题标题】:What would be the most efficient and fastest way to remove an element from a nested ArrayList?从嵌套的 ArrayList 中删除元素的最有效和最快的方法是什么?
【发布时间】:2013-10-03 20:23:40
【问题描述】:

我有一个 ArrayList 的 ArrayList 实现为:

ArrayList<ArrayList<Integer>> sampleList = new ArrayList<ArrayList<Integer>>();

假设我的列表,经过一些操作,包含以下元素:

[[1,2,3],[2,1,3,4],[3,1,2],[4,2]]

我想从这个集合中删除所有出现的特定元素,比如 4,即,我想在删除 4 后获得以下输出:

[[1,2,3],[2,1,3],[3,1,2]]

我知道我可以使用 for 循环,但在非常大的集合的情况下,这将太乏味且效率低下。 那么有没有更好的方法来做到这一点? (我是编程新手)

【问题讨论】:

  • 只有访问(或不访问)元素才能知道它是否存在。
  • 使用集合而不是列表。
  • 那么我必须使用 for 循环来检查完整集?
  • 除非你对性能有严格的要求,否则我认为你不应该太在意这种情况下的低效率。一句著名的软件工程名言是“过早的优化是万恶之源”。使用现代 CPU,您最好以不同的方式花费宝贵的时间。当然,这一切都取决于具体情况。
  • 除非您已经测量出存在性能问题,否则您可能只是在猜测,而您并没有。您应该专注于使您的代码简单明了,并且可能足够快。

标签: java arraylist


【解决方案1】:

鉴于您提出的要求,不会有更好的解决方案。您需要小心避免删除值 4 而不是位置 4 的元素:

Set<String> toRemove = Collections.singleton(4);
for (List<Integer> list : sampleList) {
  list.removeAll(toRemove);
}

【讨论】:

  • 考虑到他说效率低下是常规循环的一个缺点,您可能需要在此处定义 for 循环之外的单例。
猜你喜欢
  • 2012-10-22
  • 2016-12-17
  • 1970-01-01
  • 1970-01-01
  • 2016-08-05
  • 1970-01-01
  • 2010-11-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多