数据结构复习笔记系列1 — ArrayList

本文详细介绍了ArrayList的构造方法、扩容机制以及常用方法的使用,如添加、删除、修改元素和子列表操作。通过实例展示了ArrayList在添加第一个元素时自动扩容到10,后续扩容以1.5倍进行。文章还演示了如何通过迭代器遍历并打印ArrayList中的元素。

ArrayList称为顺序表,底层基于数组实现;在这个类中元素添加方式有两种,一种是boolean add(E e)默认放在数组最后位置,另外一种是void add(int index, E element),将元素放在指定index位置

1.ArrayList构造方法

1)有参构造方法

在这里插入图片描述
调用有参构造方法创建对象时,传入的参数就是底层数组的大小。

2)无参构造方法

public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
    }

从这个代码可以看出,我们调用了ArrayList的无参构造方法创建了一个list对象,那么底层数组大小是多少呢?

在这里插入图片描述
在这里插入图片描述

从源码看出,调用无参构造方法后,默认数组大小为0;
在这里插入图片描述
当我们调用默认添加元素方式添加第一个元素时,程序运行没有出现超出数组边界异常,可以猜想数组进行了扩容,那么扩容机制是怎样的?接着往下看哈

2.ArrayList扩容

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
总结:利用无参构造方法创建对象,第一次添加元素时,数组会进行扩容,大小为10;后续进行扩容时,以1.5倍方式进行扩容。

3.ArrayList方法练习

public static void main(String[] args) {
        List<Integer> list = new ArrayList<>(); //创建list对象
        list.add(1); //添加元素

        List<Integer> list1 = new ArrayList<>();
        list1.add(2);
        list1.add(3);

        list1.addAll(list);  //添加list对象
        System.out.println(list1);

        list1.remove(0); //删除0下标元素
        System.out.println(list1);

        Integer integer = 1;  //删除元素1
        list1.remove(integer);
        System.out.println(list1);

        list1.set(0,6);
        System.out.println(list1);

        list1.add(7);
        list1.add(8);
        list1.add(9);
        list1.add(10);
        System.out.println(list1);

        List newList = list1.subList(1,3); //截取顺序表,左闭右开
        System.out.println(newList);
        newList.set(0,6);  //修改指定下标值
        System.out.println(newList);

        System.out.println(list1); //list1中指定下标的值也发生了变化

        /**
         * 迭代器Iterator使用,打印集合中的元素
         */
        Iterator<Integer> iterator = list1.iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }

代码执行结果:
在这里插入图片描述


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值