ArrayList作用

众所周知,一旦确定了数组的大小,改变它就不容易了。不过ArrayList类就可以解决动态更改数组大小的问题。ArrayList使用起来有点像数组,但是在添加和删除元素时,具有自动调节数组容量的功能,而不需为此编写任何代码。

ArrayList管理着对象引用的一个内部数组。最终,数组的全部空间有可能被用尽。这就显现出ArrayList的操作的优势所在:如果调用add方法但是内部数组已经满了,ArrayList就将自动地创建一个更大的数组,并将所有的对象从较小的数组中拷贝到较大的数组中。

ArrayList的容量与数组的大小的区别

如果为数组分配100元素的存储空间,数组就有100个空位置可以使用,但是容量是100的ArrayList只是拥有保存100个元素的潜力(实际上,重新分配空间的话,将会超过100),但是在最初,甚至完成初始化构造之后,ArrayList根本就不含有任何元素。

eg:

package com.myself.test;import java.util.ArrayList;public class Mytest {public static void main(String[] args) {ArrayList<String> array = new ArrayList(100);System.out.println("ArrayList的容量:"+array.size());String[] s = new String[100];System.out.println("数组的长度:"+s.length);for(int i=0;i<150;i++){//当向ArrayList中添加大于ArrayList初始化定义的容量的元素个数array.add("zhangyaohui");}System.out.println("ArrayList的容量:"+array.size());for(int i=0;i<150;i++){//当向数组中添加大于数组初始化定义的大小的元素个数s[i] = "zhangyaohui";}}}

结果:

ArrayList的方法:

1.构造方法:

ArrayList<T> : 构造一个空数组列表

ArrayList<T>(int initialCapacity): 用指定容量构造一个空数组列表         参数: initialCapacity 数组列表的最初容量

2.常用方法:

size():  返回存储在数组列表中的当前元素数量。

ensureCapacity(int capacity):  确保数组列表在不重新分配存储空间的情况下就能够保存给定数量的元素。    参数:capacity  需要的存储容量

trimToSize():   将数组列表的存储容量消减到当前尺寸。

set(int index,T obj):   设置数组列表指定位置的元素值,这个操作将覆盖这个位置的原有内容。

get(int index):   获得指定位置的元素值。

add(T obj):  在数组列表的尾端添加一个元素。

add(int index,T obj): 向后移动元素,以便插入元素。

remove(int index): 删除一个元素,并将后面的元素向前移动。被删除的元素又返回值返回。

ArrayList的缺点:

ArrayList自动扩展容量的便利增加了访问元素语法的复杂程度。

既可以灵活的扩展数组,又可以方便地访问数组元素的方法:(实际上就是通过ArrayList与数组之间的转换实现的)

package com.myself.test;import java.util.ArrayList;public class Mytest {public static void main(String[] args) {ArrayList<String> array = new ArrayList();for(int i=0;i<6;i++){//当向ArrayList中添加大于ArrayList初始化定义的容量的元素个数array.add("zhangyaohui");}String[] s = new String[array.size()];//初始化一个跟ArrayList的容量大小一致的数组array.toArray(s);//将ArrayList转换成数组for(String a:s){//遍历数组System.out.println(a);}}}

结果:


注意:

对数组实施插入和删除元素的从操作其效率比较低。对于小型数组来说,这一点不必担心。但如果数组存储的元素数比较多,又经常需要在中间位置插入、删除元素,就应该考虑使用链表了。

ArrayList与数组相关推荐

  1. ArrayList和数组间的相互转换

    ArrayList和数组间的相互转换 http://wanglihu.iteye.com/blog/243238 开发中不免碰到List与数组类型之间的相互转换,举一个简单的例子: Java代码   ...

  2. ArrayList 动态数组 0119

    ArrayList 动态数组 0119 实例化对象 ArrayList al = new ArrayList(); 常用方法 方法名 说明 boolean add(数据) 添加数据 boolean r ...

  3. ArrayList动态数组对象 c# 1231

    ArrayList动态数组对象 c# 1231 导入命名空间 using System.Collections; 实例化 获取长度 Count属性 添加成员 Add方法 装箱 把数据转为object对 ...

  4. java arraylist与数组转换_java中String,数组,ArrayList三者之间的转换

    免费资源网 - https://freexyz.cn/ ArrayList转为String和数组 造一个元素为Integer的ArrayList 为list_int 造一个元素为String 的 Ar ...

  5. ArrayList和数组之间的一些转换

    1. ArrayList和数组之间的一些转换 ArrayLlist底层就是用数组实现的,并且提供了两个方法给我们来将集合转换成数组 1. public Object[] toArray() 这个数组中 ...

  6. Java ArrayList到数组

    Sometimes we have to convert ArrayList to Array in java program. Today we will look into different j ...

  7. java中的arrayList(动态数组)与静态数组

    首先,有时用数组时,常把静态数组和动态相混淆,今天来区分一下: 先写一下java中静态数组, 一维数组的声明方式: type var[]; 或type[] var; 声明数组时不能指定其长度(数组中元 ...

  8. Java中arraylist和数组的相互转换

    Java中ArrayList和数组之间的相互转换 ArrayList转为数组 数组转为ArrayList 一.ArrayList转换数组 public static void arrayListToA ...

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

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

最新文章

  1. 声明与已声明不兼容_中兴今日发声明:专注芯片设计 不具备芯片制造能力
  2. Probabilistic Principal Component Analysis
  3. 为什么WEB-INF外的jsp无法根据cookie享受国际化
  4. 检测python进程是否存活
  5. 从零开始学习前端开发 — 7、CSS宽高自适应
  6. 软件工程(总体设计②设计原理)
  7. 浅析Thinkphp3.0的行为扩展模式
  8. h3c交换机配置telnet_H3C路由器交换机配置 命令行操作基础 视频学习
  9. 苹果三星业绩比惨:iPhone营收降17%,三星手机运营利润降40%
  10. 树莓派python蓝牙_怎样通过蓝牙仅使用Android手机为树莓派配置Wi-Fi网络
  11. HTTP 缓存机制及原理
  12. WM 仓库管理T-CODE
  13. 编译gcc5.1.0时的报错
  14. Word中的文字如何上下(垂直)居中?
  15. 网站建设:网站安全检测工具
  16. 海信智能电视如何看电视直播
  17. macbook卡在进度条开不了机_Mac电脑开机一直卡在加载进度条怎么办?
  18. ReadingTime-十二月
  19. 怎么把html放到速卖通详情,速卖通详情页布局怎么弄?
  20. pr 调整图层缩放移动无效

热门文章

  1. Java更改中文_Java中文编程开发,让Java编写更改复杂
  2. 如何用python批量下载数据_使用Python批量下载数据
  3. mongDB批量插值
  4. 科学存储数据格式-HDF5
  5. git的常用操作(个人整理使用)
  6. Eclipse安装zylin[转]
  7. 【leetcode】443. String Compression
  8. App-V5.0服务器部署
  9. Scatec Solar拟在乌克兰建设60MW光伏电站
  10. 【SQLite】简单的基本使用步骤