ArrayList是常用到的JCF类,用来保存类型相同的一组对象,并通过下标来快速访问指定对象。今天讨论的是当我们使用完ArrayList后应该选择怎样合适的处理方式。

这里现在有三种方式如下:

1. 使用ArrayList的对象方法clear()

ArrayList<String> list = new ArrayList<String>();
list.add("0");
list.add("1");
list.add("2");
list.clear();

ArrayList对象内部维护一个对象数组elementData, 当执行clear()方法时, 会执行循环将elementData中每一个坐标都设置为为null, 并设置数组的size为0。

2. 使用=null

ArrayList<String> list = new ArrayList<String>();
list.add("0");
list.add("1");
list.add("2");
list = null;

直接将变量list指向null,通常当我们不需要再使用ArrayList对象时,可以将变量值设为null,以便GC可以运作并回收这部分内存空间。

需要注意的是当仍有其他变量指向该对象时,即使讲变量list置为null垃圾回收器也无法回收该内存空间。如下:

ArrayList<String> list = new ArrayList<String>();
ArrayList<String> arraylist = list;
list.add("0");
list.add("1");
list.add("2");
list = null; // 此时list变量指向null,而arraylist变量仍然指向原内存空间,原内存空间得不到释放

3. 使用= new ArrayList()

方法3有点类似于方法1,都是得到一个空的ArrayList对象。不过new ArrayList()会得到一个初始化内部数组elementData容量为10的ArrayList对象,而方法1得到的对象的容量与原对象一致。值得注意的是使用方法3需要进行如在内存中重新开辟内存空间等操作,开销较大,如果只是单纯的想要使用空的ArrayList对象,建议使用方法1,相对来说可尽量避免堆内存溢出问题。

关于ArrayList.clear()与=null以及new ArrayList<E>()的更多相关文章

  1. ArrayList.clear、=null、new Arraylist之间的对比区别

    参考博文 1.使用ArrayList的对象方法clear() List list = new ArrayList(); List list1 = list; list.add(1); list.add ...

  2. ArrayList中删除null元素效率比较

    package test; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; i ...

  3. ArrayList 源码分析和自定义ArrayList实现

    概述 ArrayList 是基于数组实现的,是一个能自动扩展的动态数组. ArrayList 是线程不安全的,多线程情况下添加元素会出现数组越界的情况,而且数组赋值操作不是原子操作,会导致多线程情况下 ...

  4. Java ArrayList和Vector、LinkedList与ArrayList、数组(Array)和列表集合(ArrayList)的区别

    ArrayList和Vector的区别ArrayList与Vector主要从二方面来说.  一.同步性:   Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步 ...

  5. 将java中数组转换为ArrayList的方法实例(包括ArrayList转数组)

    方法一:使用Arrays.asList()方法   1 2 String[] asset = {"equity", "stocks", "gold&q ...

  6. 为什么ArrayList的subList结果不能转换为ArrayList????

    subList是List接口中的一个方法,该方法主要返回一个集合中的一段子集,可以理解为截取一个集合中的部分元素,它的返回值也是一个List. 让我们初始化一个例子: import java.util ...

  7. 面试必会之ArrayList源码分析&手写ArrayList

    简介 ArrayList是我们开发中非常常用的数据存储容器之一,其底层是数组实现的,我们可以在集合中存储任意类型的数据,ArrayList是线程不安全的,非常适合用于对元素进行查找,效率非常高. 线程 ...

  8. 集合框架,ArrayList和Vector的区别,让arrayList线程安全的几种方案

    boolean add(E e) 将指定的元素添加到此列表的尾部. void add(int index, E element) 将指定的元素插入此列表中的指定位置. boolean addAll(C ...

  9. API之Scanner,Random,ArrayList基础运用。重点是ArrayList

    有关API的这些类可以参考JDK的官方中文文档,看我的另一篇文章有下载==> https://www.cnblogs.com/gz18221/p/11968505.html<==文章地址 ...

随机推荐

  1. [py]django第三方分页器django-pure-pagination实战

    第三方分页模块: django-pure-pagination 是基于django的pagination做的一款更好用的分页器 参考 配置django-pure-pagination模块 安装 pip ...

  2. Flask中'endpoint'(端点)的理解

    翻译整理自Stack Overflow:http://stackoverflow.com/questions/19261833/what-is-an-endpoint-in-flask 原文中用到了m ...

  3. PAT 1023 Have Fun with Numbers[大数乘法][一般]

    1023 Have Fun with Numbers (20)(20 分) Notice that the number 123456789 is a 9-digit number consistin ...

  4. MVC中Controller与View之间的数据传递

    一.Controller向View传递数据 Controller向View传递数据有3种形式: 通过ViewData传递 在Controller里面的Action方法中定义ViewData,并且赋值, ...

  5. [LeetCode] 112. Path Sum_Easy tag: DFS

    Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all ...

  6. Vue.Js加入bootstrap及jquery,或加入其他插件vue-resource,vuex等

    .引入jquery 项目目录下输入 cnpm install jquery --save-dev      用npm下载jq依赖 若想加入其他js库,如vue-resource,执行命令cnpm in ...

  7. 一个新人对于DW标签的理解

    标签呢分为 一.一般标签 一般标签内又分为 ① 格式控制标签 格式控制标签的书写格式是: <font .....></font>  以font为开头以/font为结尾 font ...

  8. Django初级手册6-静态文件

    用Django加载外部文件 在Django中iamges,JS或者CSS通称为static文件 定制APP的外观 一般放在应用目录下的static/polls/目录下,下为polls/static/p ...

  9. 分布式一致性Hash

    转载: https://blog.csdn.net/bntX2jSQfEHy7/article/details/79549368 为什么要有Hash一致性算法?就像以前介绍为什么要有Spring一样, ...

  10. 利用js添加class

    来来来,开篇点题. 分页应用.当在当前页时,分页的数字有个框之类的. 重要代码如下 <ul class="pagination"> <li><a hr ...