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

今天被初学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

ArrayList与String[]的更多相关文章

  1. C#中ArrayList和string,string[]数组的转换

    转载原地址: http://www.cnblogs.com/nextsoft/articles/2218689.html 1.ArrarList 转换为 string[] : ArrayList li ...

  2. 自己写的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 ...

  3. 将ArrayList<HashMap<String, String>>转为ArrayList<Bundle>类型的解决方案

    Bundle是一种利用键值对存储的数据格式,而我们在程序中通常利用HashMap存储数据.在开发中,通过Http请求得到JSONArray类型的返回值,我选择利用ArrayList<HashMa ...

  4. Java ArrayList、string、string[]之间的转换

    1.ArrarList 转换为 string[] : ArrayList list = new ArrayList(); list.Add("aaa"); list.Add(&qu ...

  5. ArrayList<HashMap<String,Object>>集锦

    1.   Android中如何从一个Activity中ArrayList<HashMap<String,Object>>传递到另一个activity?      eg:     ...

  6. API(Scanner、Random、ArrayList、String、Arrays、Math)

    Scanner import java.util.Scanner; /* public int nextInt(): to get a integer from keyboard public Str ...

  7. ArrayList集合、String[]数组、String字符串

    数组初始化时候必须指定长度,而ArrayList是动态数组,可以根据实际内容改变 //声明stsArr数组并初始化 String[] strArr = new String[]{ "aaa& ...

  8. C#中ArrayList 、Array与、string、string[]数组的相关转换

    一.ArrayList 与 string.string[]数组的转换 1.ArrayList 转换为 string[] : ArrayList list = new ArrayList(); list ...

  9. String、String[]、ArrayList<String>之间的转换

    1. ArrayList<String> 转换为 String[]: ArrayList<String>  list = new ArrayList<>(); li ...

随机推荐

  1. POI打印Excel

    一.POI概述 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 结构:HSSF - 提供读写Mic ...

  2. 为什么我的resharper控件安装之后没有显示

    Resharper和Resharper C++有时候会出现,安装之后不显示,VisualStudio菜单栏内找不到的情况,大多数是因为启动VisualStudio的时候没有激活Resharper. 安 ...

  3. Java for循环每次都通过list.size()和 string.length()获取大小是否消耗性能?

    前言 有人说在for循环之前用一个局部变量先获取到list.size().str.length(),然后在for循环的判断条件里通过这个局部变量替换list.size().str.length()会节 ...

  4. 图解微信小程序---添加tabBar底部菜单,添加已做好轮播图操作

    图解微信小程序---添加tabBar底部菜单,添加已做好轮播图操作 什么是tabBar? 顶部或者底部tab栏如果小程序是一个多 tab 应用(客户端窗口的底部或顶部有 tab 栏可以切换页面),可以 ...

  5. 《 .NET并发编程实战》阅读指南 - 第4章

    先发表生成URL以印在书里面.等书籍正式出版销售后会公开内容.

  6. 使用VMware 15 安装虚拟机和使用CentOS 8

    前言: 最近在学习Linux和.Net Core,学习一些跨平台的知识.首先我用的虚拟机软件是VMware-15.1.0,Linux系统是CentOS-8-x86_64-1905-dvd1. 一.安装 ...

  7. 单片机成长之路(51基础篇) - 023 N76e003 系统时钟切换到外部时钟

    N76e003切换到外部时钟的资料很少(因为N76e003的片子是不支持无源晶振的,有源晶振的成本又很高,所以网上很少有对N76e003的介绍).有图有真相: 代码如下: main.c #includ ...

  8. MD5加密方法HashPasswordForStoringInConfigFile(string,string)过时问题处理方法

    最近写代码的时候一直有一种很奇怪的感觉,查了一下发现原来是系统中的MD5加密方法报了过时的警告,虽然对系统没有任何影响,但是开发过程中绿色波浪线就像挥之不去的阴影一样.开发人员多多少少都会有点强迫症, ...

  9. C#工具类OracleHelper,基于Oracle.ManagedDataAccess.Client封装

    基于Oracle.ManagedDataAccess.Client封装的Oracle工具类OracleHelper,代码如下: using System; using System.Data; usi ...

  10. C# vb .NET从pdf读取识别条形码线性条码

    如何在C#,vb等.NET平台语言里实现快速准确从pdf文件读取,或者从Pdf指定页面读取条形码或QR二维码呢?答案是使用SharpBarcode! SharpBarcode是C#快速高效.准确的条形 ...