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 ...
随机推荐
- Centos.安装Goaccess1.2
下载 wget http://tar.goaccess.io/goaccess-1.2.tar.gz 解压 tar -xzvf goaccess-1.2.tar.gz 安装支持库GeoIP-devel ...
- (三)golang--执行流程分析
XXX.go--go build XXX.go--XXX.exe XXX.go--go run XXX.go 两种方式的区别:(1)如果我们先编译生成了可执行文件,那么我们可以将该可执行文件拷贝到没g ...
- mvn手动上传jar到本地仓库
mvn install:install-file -Dfile=G:\elastic-project\workspace\out\artifacts\xxl_job_core_jar\xxl-job- ...
- 说一说switch关键字的奥秘
Switch语法 switch作为Java内置关键字,却在项目中真正使用的比较少.关于switch,还是有那么一些奥秘的. 要什么switch,我有if-else 确实,项目中使用switch比较少的 ...
- python实现AES加密
pip install pycryptodomex 需要安装pycryptodomex模块 aes加密 from Cryptodome.Cipher import AES from binascii ...
- 【模板整合计划】NB数论
[模板整合计划]NB数论 一:[质数] 1.[暴力判] 素数.コンテスト.素数 \(\text{[AT807]}\) #include<cstdio> #include<cmath& ...
- 【题解】宫廷守卫 [P1263]
[题解]宫廷守卫 [P1263] 传送门:宫廷守卫 \([P1263]\) [题目描述] 给出一个 \(n*m\) 的方格图,分别用整数 \(0,1,2\) 表示空地.陷阱.墙,空地上可以放置守卫,如 ...
- MySQL如何定位并优化慢查询sql
1.如何定位并优化慢查询sql a.根据慢日志定位慢查询sql SHOW VARIABLES LIKE '%query%' 查询慢日志相关信息 slow_query_log 默认是off关闭 ...
- 单片机成长之路(stm8基础篇)- 025 stm8 时钟切换
stm8 时钟切换; /************************************ 时钟设置 ************************************/ // 时钟 0: ...
- C# Socket服务器及多客户端连接示例
服务端代码[控制台示例] static List<Socket> Sockets = new List<Socket>(); static void Main(string[] ...