zoukankan      html  css  js  c++  java
  • Java 之 ArrayList 集合

    一、ArrayList 概述

      java.util.ArrayList  是 大小可变的数组 的实现,存储在内的数据称为元素。该类是一个 集合类(容器),可以让我们更便捷的存储和操作对象数据。

      该类可以不断添加元素,其大小也自动增长,弥补了数组固定长度这一缺点。

      java.util.ArrayList 集合数据存储的结构是数组结构

      特点:元素增删慢,查找快。

      注意:此集合的实现不是同步的,多线程的,速度快,效率高。

    二、ArrayList 使用步骤

      1、查看类

    java.util.ArrayList<E> : 该类需要 import 导入后使用
    

       <E> 表示一种指定的数据类型,叫做泛型。 E ,取自 Element(元素)的首字母,在出现 <E> 的地方,使用一种引用数据类型将其替换即可,表示这个集合中存储哪种引用类型的元素。

      2、查看构造方法

        public ArrayList():构造一个内容为空的集合。

        基本格式:

    ArrayList<String> list = new ArrayList<String>();
    

          在 JDK 7后,右侧泛型的尖括号之内可以留空,但是 <>仍然要写。简化格式:

    ArrayList<String> list = new ArrayList<>();

    三、构造方法

    构造方法:

    ArrayList():构造一个初始容量为10的空列表(JDK1.6)
    ArrayList(int initialCapacity): 构造一个具有指定初始容量的空列表。
    ArrayList(Collection<? extends E> c) 构造一个包含指定 collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的
    

      对于第一个无参的构造方法,来跟踪一下源码:

      JDK1.8版本:发现内部初始化为了一个长度为0的空数组  DEFAULTCAPACITY_EMPTY_ELEMENTDATA

     

       JDK1.7版本:也是初始化为长度为0的空数组  EMPTY_ELEMENTDATA;

      JDK1.6 版本:初始化为长度为10的数组

       思考:为什么要初始化为空数组呢?

      这个因为在开发中,很多时候在方法中创建了 ArrayList 的对象作为返回值,但是可能这个里面没有元素,这个时候的话,如果初始化为10的数组,就浪费空间了。

    四、常用方法

      1、add(Object obj) 方法

        源码跟踪(JDK1.8):

     

     

       源码跟踪(JDK1.9):

     

     

     

     

       总结

        JDK1.8中,第一次添加一个元素时,扩容为长度为10的数组,下次在添加时,会先进行容量的判断,如果够了,就不需要扩充了;如果不够,将扩充为1.5倍。

      2、remove(int index) 方法

        源码跟踪:

      3、remove(Object obj)

        源码跟踪:

     

     

      4、set(int index, E ele) 方法

        源码跟踪:

     

    五、存储基本数据类型

      ArrayList 对象不能存储基本类型,只能存储引用类型的数据。类似 <int> 不能写,但是存储基本数据类型对应的包装类是可以的。所以,想要存储基本数据类型,<> 中的数据类型,必须转换后才能编写。

      基本包装类型:基本包装类型

  • 相关阅读:
    Map集合的四种遍历
    java 请求 google translate
    Linux 内核初级管理
    Linux GRUB
    Linux 系统启动流程
    Linux 任务计划 crontab
    Linux 进程管理工具
    Linux sudo实作
    Linux 进程管理
    Linux 网络配置命令:ip、ss
  • 原文地址:https://www.cnblogs.com/niujifei/p/11421117.html
Copyright © 2011-2022 走看看