不逼自己一把,你永远不知道什么是绝望。

今天被初学java的朋友问到了String[]ArrayList是不是有关系呢?

猜测是名称之间的联想,记此篇解惑。

Array英语单词里是数组、阵列的意思,在java中数组是这样定义的:一组相关类型的变量集合。

格式:数据类型[] 数组名称 = new 数据类型[长度];

根据上边的格式,列举几个常见的数组,比如:String[] int[],如下是数组一些特点:

  1. 数组长度是固定的,无法实现动态扩容;
  2. 数组下标(从0开始)超出数组长度,数组越界异常(运行时异常);
  3. 数组中每个元素都有默认值,默认值是该数据类型默认值;
  4. 数组名称.length(属性):取得数组长度;

看完了上边的数组特点,再来看看ArrayList吧,他又是个啥呢?

ArrayList就是动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了动态的增加和减少元素,实现了ICollection和IList接口,灵活的设置数组的大小等好处 --- 百度百科

所以,看到这,已经明确String[]ArrayList是有点关系的了……

ArrayList是一个数组队列,相当于动态数组,与Java中的数组不同,数组一旦创建,长度固定,但是ArrayList的长度是动态的,不受限制,可以存储任意多的对象,但是只能存储对象,不能存储原生数据类型例如int(基本数据类型)。

如下是ArrayList的关系图:



  1. 继承于AbstractList,实现了List,提供了相关的添加、删除、修改、遍历等功能。
  2. 实现了RandmoAccess接口,即提供了随机访问的功能。RandmoAccessjava中用来被List实现,为List提供快速访问功能的。在ArrayList中,我们即可以通过元素的序号快速获取元素对象;这就是快速随机访问。
  3. 实现了Cloneable接口,即覆盖了函数clone(),能被克隆。
  4. 实现了java.io.Serializable接口,这意味着ArrayList支持序列化,能通过序列化去传输。

总之,ArrayList是非常重要的一个类,在代码中被广泛使用。

点个题,看一下数组与ArrayList的比较:

操作 Array(String[]) ArrayList
创建 String[] array = new String[10]; ArrayList list = new ArrayList<>();
访问一个元素 array[index] list.get(index);
更新一个元素 array[index] = "niceyoo"; list.set(index, "niceyoo");
返回大小 array.length list.size();
排序 java.util.Arrays.sort(array) java.util.Collections.sort(arraylist)
添加一个新元素 相当复杂 list.add("niceyoo");
插入一个新元素 相当复杂 list.add(index, "niceyoo");
删除一个元素 相当复杂 list.remove(index);
删除一个元素 相当复杂 list.remove(Object);
删除所有元素 稍微复杂 list.clear();

我创建了一个用来记录自己学习之路的公众号,感兴趣的小伙伴可以关注一下微信公众号:niceyoo

最新文章

  1. 易懂 易上手的cookie 最简单明了 js中cookie的使用方法及教程
  2. informatica读取FTP文件
  3. SGIP、SMGP 长短信发送问题小结
  4. bzoj4318OSU &amp;tyvj1952 Easy
  5. Leetcode 299 Bulls and Cows 字符串处理 统计
  6. hiho_1070_RMQ
  7. javascript实现数据结构:线性表--简单示例及线性表的顺序表示和实现
  8. C#操作JSON学习
  9. 背包问题 (DP)
  10. erlang四大behaviour之一gen_server
  11. Python 爬虫 爬校花网!!
  12. 用vue做app内嵌页遇到的坑
  13. 移动web开发之touch事件
  14. C#Json转DataTable
  15. 痞子衡嵌入式:串口调试工具Jays-PyCOM诞生记(5)- 软件优化
  16. 20 由属性查询学习到的ArcMap、javaScripts API相关操作
  17. js 检查登录态方法封装(闭包、状态缓存)
  18. 用curl模拟夹带cookie的http请求
  19. Linux运维工程师真实的工作状态到底是怎么样的?
  20. Linux上统计文件夹下文件个数以及目录个数

热门文章

  1. ES6模版字符串
  2. .NET Core:Json和XML
  3. 手写Tomcat服务器
  4. mysql获取日期语句汇总
  5. Appium+python自动化(一)- 环境搭建—上(超详解)
  6. 机器学习之TensorFlow介绍
  7. 构建简单Windows Service示例
  8. C# 身份证号码15位和18位验证
  9. 我是如何一步步编码完成万仓网ERP系统的(九)产品库设计 5.产品属性项
  10. [世预赛] 中国vs关岛,关岛实力有限 国足或许可以赢其10个球,比分预测 10:0,8:0,13:0