• ArrayList与String[]


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

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

  • 相关阅读:
    Linux bash sh .source exec 的区别比较。
    flink1.10 Linux 集群安装
    有关Spark中FlatMap算子源码理解
    Flink有关于水位线(WaterMark)相关问题
    Flink中并行度相关问题
    关于spark中的ResultStage和ShuffleMapStage
    关于windows10共享WiFi问题
    外网映射
    Druid的问题
    《小学四则运算练习软件软件需求说明》结对项目报告
  • 原文地址:https://www.cnblogs.com/niceyoo/p/11870253.html
Copyright © 2020-2023  润新知