当前位置: 首页 > 面试题库 >

清空ArrayList还是只创建一个新列表,然后让旧列表被垃圾回收?

仲孙磊
2023-03-14
问题内容

清空一个集合(在我的例子中是一个ArrayList)与创建一个新集合(并让垃圾收集器清除旧的集合)的优缺点是什么?

具体来说,我有一个ArrayList<Rectangle>list。当发生某种情况时,我需要清空list并重新填充其他内容。我应该打电话list.clear()还是只做一个新的ArrayList<Rectangle>,让旧的被垃圾收集?每种方法的优缺点是什么?


问题答案:

您可以保留容器并clear在想减少GC的负载时调用:clear()清空数组内的所有引用,但不使数组符合垃圾回收器的回收条件。这可能会加快将来的插入速度,因为内部数组ArrayList不需要增长。当您计划添加到容器中的数据与清除时的大小大致相同时,此方法特别有利。

另外,clear当其他对象持有对您要清除的数组的引用时,您可能需要使用。

当新数据的大小可能与以前不同时,释放容器并创建一个新容器是有意义的。当然,通过clear()与结合使用,您可以达到类似的效果
trimToSize()



 类似资料:
  • 本文向大家介绍dart 创建一个新列表,包括了dart 创建一个新列表的使用技巧和注意事项,需要的朋友参考一下 示例 列表可以通过多种方式创建。 推荐的方法是使用List文字: 该List构造可以作为很好: 如果您喜欢更强的键入,还可以通过以下方式之一提供类型参数: 为了创建一个小的可增长列表,该列表为空或包含一些已知的初始值,首选文字形式。对于其他种类的列表,有专门的构造函数: 另请参阅关于集合

  • 问题内容: 在Python中创建新的空列表的最佳方法是什么? 要么 我之所以这样问是因为两个原因: 技术原因,关于哪个更快。(创建一个类会导致开销吗?) 代码可读性-这是标准约定。 问题答案: 您可以通过以下方法测试哪段代码更快: 但是,实际上,这种初始化很可能只是程序的一小部分,因此担心此初始化可能会出错。 可读性非常主观。我更喜欢,但是像AlexMartelli这样的一些非常博学的人更喜欢,因

  • 我正在为一个方法编写一个JUnit测试用例,该方法引导我指向另一个默认方法,当调用该默认方法时,它返回一个新的ArrayList。 试验方法 在方法中,堆栈跟踪将我指向,它将我引向这里 在另一个类中定义的的定义 是在构造函数调用时自动填充的HashMap 测试用例 堆栈跟踪 我不知道我错在哪里了。请帮我解决这个问题。

  • 我阅读了这个问题的答案:Java 8在使用流“过滤器”和“收集”后会创建一个新的列表吗? 但这不太符合我的经验...我想。我只是想确保我清楚情况。 考虑以下代码(可以在https://www . tutorialspoint . com/compile _ Java _ online . PHP上运行): 我期望的结果如下: 但我得到的实际结果是: 由于某种原因,当我在< code > hasti

  • 我知道这是一个相当普遍的问题,但是我还没有找到让我满意的答案。 我已经使用django rest框架一段时间了,但除了给出的例子之外,这基本上是无关紧要的。其默认行为是在访问具有空项目列表的路由时返回具有空列表资源的 HTTP 200。例如:如果我们有一个路由,如来访问文章列表,但它不包含任何项目,我们将得到类似于以下json的响应: 这很好。我们在/articles/找到了我们要找的资源,只是碰

  • 问题内容: 我需要增量填充列表或列表元组。看起来像这样: 为了使它不那么冗长,更优雅,我想我会预先分配一个空列表 预分配部分对我来说并不明显。当我这样做时,我会收到对同一列表的引用列表,因此以下内容的输出 是: 我可以使用循环(),但我想知道是否存在“无环”解决方案。 是获得我想要的东西的唯一方法 问题答案: 这将创建x个不同的列表,每个列表都有一个列表副本(该列表中的每个项目都是通过引用提供的,