ArrayList与String[]
不逼自己一把,你永远不知道什么是绝望。
今天被初学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

ArrayList与String[]的更多相关文章
- C#中ArrayList和string,string[]数组的转换
转载原地址: http://www.cnblogs.com/nextsoft/articles/2218689.html 1.ArrarList 转换为 string[] : ArrayList li ...
- 自己写的demo。List<HashMap<String,Object>>=new ArrayList<HashMap<String,Object>>
package com.pb.collection; import java.util.ArrayList; import java.util.HashMap; import java.util.It ...
- 将ArrayList<HashMap<String, String>>转为ArrayList<Bundle>类型的解决方案
Bundle是一种利用键值对存储的数据格式,而我们在程序中通常利用HashMap存储数据.在开发中,通过Http请求得到JSONArray类型的返回值,我选择利用ArrayList<HashMa ...
- Java ArrayList、string、string[]之间的转换
1.ArrarList 转换为 string[] : ArrayList list = new ArrayList(); list.Add("aaa"); list.Add(&qu ...
- ArrayList<HashMap<String,Object>>集锦
1. Android中如何从一个Activity中ArrayList<HashMap<String,Object>>传递到另一个activity? eg: ...
- API(Scanner、Random、ArrayList、String、Arrays、Math)
Scanner import java.util.Scanner; /* public int nextInt(): to get a integer from keyboard public Str ...
- ArrayList集合、String[]数组、String字符串
数组初始化时候必须指定长度,而ArrayList是动态数组,可以根据实际内容改变 //声明stsArr数组并初始化 String[] strArr = new String[]{ "aaa& ...
- C#中ArrayList 、Array与、string、string[]数组的相关转换
一.ArrayList 与 string.string[]数组的转换 1.ArrayList 转换为 string[] : ArrayList list = new ArrayList(); list ...
- String、String[]、ArrayList<String>之间的转换
1. ArrayList<String> 转换为 String[]: ArrayList<String> list = new ArrayList<>(); li ...
随机推荐
- Windows下MySQL安装流程,8.0以上版本ROOT密码报错及修改
官网下载MySQL安装后,解压,添加环境变量,以管理员方式运行cmd,运行以下命令 mysqld --initialize --console mysqld -install net start my ...
- MYSQL插入千万数据的工具类
建表语句 CREATE TABLE `test_id` ( `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键自增非空', `name` varchar( ...
- Eureka概述
1:Eureka是什么 Eureka是Spring Cloud Netflix的一个子模块,也是核心模块之一.Eureka是一个基于REST的服务,用于定位服务,以及·实现云端中间层服务发现和故障转移 ...
- The multi-part request contained parameter data (excluding uploaded files) that exceeded the limit for maxPostSize set on the associated connector.
springboot 表单体积过大时报错: The multi-part request contained parameter data (excluding uploaded files) tha ...
- 哪个版本的gcc才支持c11
而知,低版本的gcc不支持c11. (而我此处的eglibc 2.17,和那人的glibc-2.16.0,都是需要支持c11的gcc的) 所以此处想要去搞清楚,什么版本的,哪个版本的,gcc,才支持c ...
- vue cli 3 那些事儿
配置 eslint 可在 package.json 中的 eslintConfig 中配置,比如允许在代码中使用 console,package.json 中配置如下 ... "eslint ...
- http响应总结:常见http响应错误总结
工作中经常会被同事问这个http请求为什么调不通,我虽然能解释清楚错误是什么,但是没有总结过,想到刚开始时,也是看了别人的文章才会的,所以总结一下,贡献一下自己的经验. http 404 响应 404 ...
- ASP.NET Core 中的 Razor 文件编译
asp .net core mvc 3.0 在编译的时候做了一些改变,有些view视图更改需要重新编译,你也可以配置运行时编译,不用每次更改都去重新生成,具体代码如下,从官方文档看到,做个记录. Ra ...
- CTS,CLS,CLR解释
问题阐述 CTS.CLS和 CLR分别是什么意思? 专家解答 CTS.CLS和 CLR是.NET框架的 3个核心部分,下面分别对它们进行介绍. (1)CTS CTS即通用类型系统,它定义了如何在.NE ...
- Python学习笔记之将数据写入到文件中
10-3 访客:编写一个程序,提示用户输入其名字:用户作出响应后,将其名字写入到文件guest.txt 中. 编写Python代码: username = input("Please ent ...