ArrayList与String[]
2024-09-08 10:35:43
不逼自己一把,你永远不知道什么是绝望。
今天被初学java的朋友问到了String[]跟ArrayList是不是有关系呢?
猜测是名称之间的联想,记此篇解惑。
Array英语单词里是数组、阵列的意思,在java中数组是这样定义的:一组相关类型的变量集合。
格式:数据类型[] 数组名称 = new 数据类型[长度];
根据上边的格式,列举几个常见的数组,比如:String[] int[],如下是数组一些特点:
- 数组长度是固定的,无法实现动态扩容;
- 数组下标(从0开始)超出数组长度,数组越界异常(运行时异常);
- 数组中每个元素都有默认值,默认值是该数据类型默认值;
- 数组名称.length(属性):取得数组长度;
看完了上边的数组特点,再来看看ArrayList吧,他又是个啥呢?
ArrayList就是动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了动态的增加和减少元素,实现了ICollection和IList接口,灵活的设置数组的大小等好处 --- 百度百科
所以,看到这,已经明确String[]跟ArrayList是有点关系的了……
ArrayList是一个数组队列,相当于动态数组,与Java中的数组不同,数组一旦创建,长度固定,但是ArrayList的长度是动态的,不受限制,可以存储任意多的对象,但是只能存储对象,不能存储原生数据类型例如int(基本数据类型)。
如下是ArrayList的关系图:
- 继承于AbstractList,实现了List,提供了相关的添加、删除、修改、遍历等功能。
- 实现了RandmoAccess接口,即提供了随机访问的功能。RandmoAccess是java中用来被List实现,为List提供快速访问功能的。在ArrayList中,我们即可以通过元素的序号快速获取元素对象;这就是快速随机访问。
- 实现了Cloneable接口,即覆盖了函数clone(),能被克隆。
- 实现了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
最新文章
- 易懂 易上手的cookie 最简单明了 js中cookie的使用方法及教程
- informatica读取FTP文件
- SGIP、SMGP 长短信发送问题小结
- bzoj4318OSU &;tyvj1952 Easy
- Leetcode 299 Bulls and Cows 字符串处理 统计
- hiho_1070_RMQ
- javascript实现数据结构:线性表--简单示例及线性表的顺序表示和实现
- C#操作JSON学习
- 背包问题 (DP)
- erlang四大behaviour之一gen_server
- Python 爬虫 爬校花网!!
- 用vue做app内嵌页遇到的坑
- 移动web开发之touch事件
- C#Json转DataTable
- 痞子衡嵌入式:串口调试工具Jays-PyCOM诞生记(5)- 软件优化
- 20 由属性查询学习到的ArcMap、javaScripts API相关操作
- js 检查登录态方法封装(闭包、状态缓存)
- 用curl模拟夹带cookie的http请求
- Linux运维工程师真实的工作状态到底是怎么样的?
- Linux上统计文件夹下文件个数以及目录个数