Java数据结构-ArrayList

03-29 5823阅读 0评论

目录

  • 1. 初识集合框架
  • 2. ArrayList的介绍
  • 3. ArrayList的使用
    • 3.1 构造方法
    • 3.2 add
    • 3.3 addAll
    • 3.4 remove
    • 3.5 get
    • 3.6 set
    • 3.7 contains
    • 3.8 IndexOf
    • 3.9 lastIndexOf
    • 3.10 subList
    • 4. ArrayList的遍历
      • 4.1 简单粗暴法
      • 4.2 循环遍历法
      • 4.3 迭代器

        1. 初识集合框架

        Java集合框架是Java编程语言提供的一组接口和类,用于存储和操作数据。它提供了各种类型的集合,如列表、集合、映射等,以及用于操作和管理集合的接口和类。

        Java集合框架主要包括以下部分:蓝色代表接口,红色代表类,黄色代表抽象类

        Java数据结构-ArrayList 第1张

        前面我们自己实现了一个顺序表:Java数据结构-顺序表,那么我们每次想要使用这个数据结构的时候,都需要自己实现一遍吗?不需要!Java给我们提供了ArrayList这个类,我们使用它就好了!

        2. ArrayList的介绍

        ArrayList是集合框架中的一个泛型类,可以存储任意的数据,使用可以传递类型,它实现了List接口,ArrayList的本质其实是一个数组。ArrayList使用方法有两种:

        	ArrayList arr = new ArrayList();
        	List list = new ArrayList();
        

        这两个区别在于:List是一个接口,ArrayList是一个类,因为ArrayList实现了List接口,所以List中有的方法arr都可以调用,并且arr还能调用ArrayList独有的方法。所以ArrayList能调用的方法更多

        3. ArrayList的使用

        下面列举了一些ArrayList的常用方法

        3.1 构造方法

        ArrayList的构造方法有3个

        第一个:不带参数的构造方法

        Java数据结构-ArrayList 第2张

        Java数据结构-ArrayList 第3张

        Java数据结构-ArrayList 第4张

        可以看出,调用不带参数的构造方法时,并没有给数组分配内存,数组长度是0

        第二个:带一个整型类型参数的构造方法

        Java数据结构-ArrayList 第5张

        initialCapacity表示初始容量,也就是说,我们可以通过参数来指定数组的大小

        第三个:

        这个参数有点奇怪,它表示:只要是Collection本身或者实现了Collection接口的都能进行传递

        Java数据结构-ArrayList 第6张

        举个例子:

        从LinkedList第一张图可以看到,LinkedList是实现了Collection接口的,所以下面代码中list也能作为参数传递给ArrayList,这样可以把list中所有的数据全部添加到arr1中

            public static void main(String[] args) {
                LinkedList list = new LinkedList();
                list.add(100);
                ArrayList arr1 = new ArrayList(list);
                arr1.add(99);
                System.out.println(arr1);
            }
        

        3.2 add

        add方法的功能:在顺序表的末尾添加数据

        add的原理:如果说,实例化ArrayList,调用不带参数的构造方法时,没有分配内存,数组长度是0,那么add是如何添加的?来看源码:

        Java数据结构-ArrayList 第7张

        总结:调用不带参数的构造方法,第一次add时,会给数组分配大小为10的内存,如果容量不够,会自动扩容1.5倍

        3.3 addAll

        将指定集合的所有元素插入列表,可以指定插入位置,如果不指定默认是尾插

        原型:

        public boolean addAll(int index, Collection

免责声明
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明。
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所
提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何
损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在
转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并白负版权等法律责任。

手机扫描二维码访问

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,5823人围观)

还没有评论,来说两句吧...

目录[+]