美文网首页
Java 泛型数组列表 ArrayList (动态数组)的使用

Java 泛型数组列表 ArrayList (动态数组)的使用

作者: PerryJ | 来源:发表于2018-11-08 20:18 被阅读0次

一、说明

Java 提供一个类可以解决数组的动态长度的问题,它就是 ArrayList 类,即泛型数组列表,也就是所谓的动态数组。使用 ArrayList 可以实时地添加元素而不用去管长度的问题。
ArrayList 属于集合类库,实现了 List 接口。

二、基本使用

1.声明
ArrayList 是一个采用 类型参数泛型类。需要用尖括号将类名括起来加在后面,以指定数组列表保存的元素对象类型。注意尖括号内只能是类,不能是基本数据类型,如要存储基本数据类型,可使用对象包装器(Integer 等)

ArrayList<String> arrList = new ArrayList<String>();  //声明和构造一个用来保存 String 类型的动态数组

2.元素的添加与移除
使用 add 方法将元素添加到数组列表中,分为默认的末尾添加和指定顺序添加。使用索引添加时,索引后面的元素都会往后移一位。

arrList.add("first");//添加到末尾
arrList.add(3,"third");// 通过索引添加到第三位,原本在第三位及后面的元素顺次后移

使用 remove 方法删除指定位置元素,其后的元素将顺次前移,删除的元素将通过返回值返回。

String s = arrList.remove (3);//删除第三个元素,s = third

对数组实施插入和删除操作的效率很低。

3.获取数组长度
使用 size 方法获取数组列表的实际元素长度 ,相当于数组的 length 方法。

4.访问数组列表元素
ArrayList 的元素只能通过 set(替换元素) 和 get(获取元素) 方法访问。注意,使用 set 方法设置元素时,只能替换已经存在的元素。

5.将 ArrayList 转换为数组
使用 toArray 方法将 ArrayList 转换为数组。

String [] arr = new String[arrList.size()];
arrList.toArray(arr);

三、扩展使用

1.长度问题
如果能够预估数组的元素数量,可以预先设置数组大小,先分配固定空间。有两种方法预设,分别是构造时传入参数和 ensureCapacity 方法。

ArrayList<String> aList = new ArrayList<>(100);

ArrayList<String> bList = new ArrayList<>();
bList.ensureCapacity(100);//要在数组使用前调用

两种方法均为数组分配100个对象的空间。
ArrayList 的初始分配空间和数组不同,ArrayList只是预留空间,其内没有元素。

如果添加时元素超过100个,会再次分配100个空间。这意味着如果有102个数,ArrayList的实际占用空间是200个对象的空间。
在长度确定之后,可以使用 trimToSize 方法将容量削减到当前尺寸。但再次添加时又会增加100个空间。

2.ArrayList 还有一些不常用的方法,如 isEmpty 判断是否为空、addAll 添加集合等,使用时参考官方文档。

相关文章

  • Java 泛型数组列表 ArrayList (动态数组)的使用

    一、说明 Java 提供一个类可以解决数组的动态长度的问题,它就是 ArrayList 类,即泛型数组列表,也就是...

  • 泛型数组列表与包装器

    1.ArrayList泛型数组列表  ArrayList使用起来有点像数组,但在添加或删除元素时,具有自动调节数组...

  • C语言 泛型动态数组

    泛型实现思路:万能指针void *动态数组实现思路:动态进行数组内存的扩容 realloc 泛型动态数组 数组可以...

  • 从Android到Java(二)

    Java基础知识填坑继续。 Java 集合与泛型 数组 VS ArrayList 数组大概是我们学习任何语言时接触...

  • 泛型数组

    泛型数组 正如之前在Erase.java中所见,一般的解决方法是在任何想要创建泛型的地方使用ArrayList 这...

  • JJJJJava-ArrayList

    ArrayList类是一个特殊的数组。通过添加和删除元素,就可以动态改变数组的长度 泛型 泛型的本质是参数化类型,...

  • scala 与 java泛型数组

    java 泛型数组初始化 使用这样的方式初始化java的数组会出错,因为java不支持泛型数组。按照我的理解,ja...

  • ArrayList源码解析

    ArrayList简介 ArrayList底层是数组队列,相当于动态数组。与java中的数组相比,它的长度能动态增...

  • 泛型数组列表ArrayList

    java.util.ArrayList## ArrayList()构造一个空数组列表。ArrayLis...

  • ArrayList 你真的了解吗?

    ArrayList简介 ArrayList 的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量...

网友评论

      本文标题:Java 泛型数组列表 ArrayList (动态数组)的使用

      本文链接:https://www.haomeiwen.com/subject/fosvxqtx.html