代码之家  ›  专栏  ›  技术社区  ›  lfaraone

arraylist<e>.clear()的有用性?

  •  5
  • lfaraone  · 技术社区  · 16 年前

    我正在浏览Java文档,我遇到了ARARYLIST的CULL()方法。

    它的用途是什么,而不是简单地将新的arraylist对象重新分配给变量?

    6 回复  |  直到 16 年前
        1
  •  14
  •   L. Cornelius Dol    16 年前

    因为一个列表可能有多个引用,所以清除它可能比重新分配所有引用更可取和/或更实际。

    如果你经常清空你的数组(比如在一个大循环中),那么创建大量临时对象是没有意义的。当然,垃圾收集器最终会将它们清理干净,但是如果不必这样做的话,浪费资源是没有意义的。

    因为清除列表比创建一个新的工作要少。

        2
  •  3
  •   Steve Kuo    16 年前

    您可能有最后一个字段(类变量) List :

    private final List<Thing> things = ...
    

    在课堂上的某个地方,你想清除(删除所有)东西。自从 things 最终无法重新分配。此外,您可能不想重新分配一个新的列表实例,因为您已经有了一个完美的列表实例。

        3
  •  2
  •   Tomasz Blachowicz    16 年前

    想象一下有多个相同的引用的情况 java.util.ArrayList 在您的代码中。创建列表的新实例并分配给所有变量几乎是不可能或非常困难的。但是 java.util.ArrayList.clear() 耍把戏!

        4
  •  2
  •   Uri    16 年前

    如果你的目标是真的清晰的话,你用清晰的方式支付的费用比用创造一个新的物体要少。

    重新分配引用不会清除对象。假设是,如果没有其他引用,GC将很快收回它。否则,你就把自己搞得一团糟。

        5
  •  2
  •   Matthew Olenik    16 年前

    除上述原因外,清除列表在语义上通常比创建新列表更正确。如果您想要的结果是一个清除列表,您应该采取的操作是清除列表,而不是创建一个新的列表。

        6
  •  1
  •   Kevin Herron    16 年前

    clear()不会重新分配新的对象,因此它对性能的影响较小。