ArrayList

2021.03.14
第33次记录

课堂笔记:
ArrayList集合:
1.默认初始容量为10(底层先创建一个长度为0的数组,当添加第一个元素的时候,初始化容量10)
2.集合底层是一个Object[]数组
3.构造方法:
new ArrayList();
4.ArrayList集合的扩容:
增长到原容量的1.5倍。
ArrayList底层是数组,怎么优化?
尽可能少的扩容。因为数组扩容效率比较低,建议使用ArrayList集合
的时候预估元素个数,给定一个初始化容量。
5.数组的优点:
检索效率比较高。
6.数组的缺点:
随机增删元素的效率比较低;
数组无法存储大数据量;
7.需要注意的是:向数组末尾添加元素,效率还是很高的。

代码演示:

public class ArrayListTest01 {
    public static void main(String[] args) {
        List list1 = new ArrayList();
        System.out.println(list1.size());
        List list2 = new ArrayList(20);
        System.out.println(list2.size());
        list1.add(1);
        list1.add(2);
        list1.add(3);
        list1.add(4);
        list1.add(5);
        list1.add(6);
        list1.add(7);
        list1.add(8);
        list1.add(9);
        list1.add(10);
        System.out.println(list1.size());
        list1.add(11);
        System.out.println(list1.size());
    }
}

输出结果:
0
0
10
11

代码演示2:

//ArrayList集合的构造方法
public class ArrayListTest02 {
    public static void main(String[] args) {
        List list1 = new ArrayList();
        List list2 = new ArrayList(100);
        Collection c = new HashSet();
        c.add(100);
        c.add(900);
        c.add(50);
        List list3 = new ArrayList(c);
        for (int i = 0; i < list3.size(); i++) {
            System.out.println(list3.get(i));
        }
    }
}

输出结果:
50
100
900

代码演示3:

public class ListText01 {
    public static void main(String[] args) {
        //创建List类型的集合
        List myList = new ArrayList();
        //添加元素
        myList.add("A");
        myList.add("B");
        myList.add("C");
        myList.add("C");
        myList.add("D");
        //这个方法使用不多,因为对于ArrayList来说效率比较低
        myList.add(4, "king");
        myList.add(5, "GAME");
        //迭代
        Iterator it = myList.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
        System.out.println("----------");
        //根据下标获取元素
        Object firstObj = myList.get(0);
        System.out.println(firstObj);
        System.out.println("----------");
        //因为有下标,所以List集合有自己特殊的遍历方式
        //通过下标遍历
        for (int i = 0; i < myList.size(); i++) {
            Object obj = myList.get(i);
            System.out.println(obj);
        }
        System.out.println("----------");
        //获取指定对象第一次出现处的索引
        System.out.println(myList.indexOf("GAME"));
        System.out.println("----------");
        //获取指定对象最后一次出现处的索引
        System.out.println(myList.lastIndexOf("C"));
        System.out.println("----------");
        //删除指定下标位置的元素。删除下标为0的元素
        System.out.println(myList.remove(0));
        System.out.println(myList.size());
        //修改指定位置的元素
        System.out.println("----------");
        for (int i = 0; i < myList.size(); i++) {
            Object obj = myList.get(i);
            System.out.println(obj);
        }
        System.out.println("----------");
        myList.set(1, "Hello");
        for (int i = 0; i < myList.size(); i++) {
            Object obj = myList.get(i);
            System.out.println(obj);
        }
    }
}

输出结果:

A
B
C
C
king
GAME
D
----------
A
----------
A
B
C
C
king
GAME
D
----------
5
----------
3
----------
A
6
----------
B
C
C
king
GAME
D
----------
B
Hello
C
king
GAME
D
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值