【JAVA集合IV-ArrayList】

【JAVA集合IV-ArrayList】,第1张

JAVA集合IV-ArrayList
  • 1.ArrayList底层结构
  • 2.ArrayList源码分析
  • 3.练习

1.ArrayList底层结构

(1)注意事项

  • ArrayList可以加入null,并且可以是多个。
  • ArrayList是由数组来实现数据存储的。
  • ArrayList基本等同于Vector,除了ArrayList是线程不安全(执行效率高),在多线程情况下,不建议使用ArrayList。

(2)底层结构


由上图可以看到:
ArrayList 继承至AbstractList类,并实现了List、Serializable、Cloneable、RandomAccess接口。

(3)方法

2.ArrayList源码分析

(1)结论

  • ArrayList中维护了一个Object类型的数组elementData,transient Object[] elementData;//transient表示瞬间,短暂的,表示该属性不会被序列化
  • 当创建ArrayList对象时,如果使用的是无参构造器,则初试elementData容量为0,第一次添加则扩容elementData为10,如果再次添加,这扩容为elementData的1.5倍,也就是15,后面扩展依次类推。
  • 如果使用的是指定大小的构造器,则初试elementData容量为指定大小,如果需要扩容,则直接扩容elementData为1.5倍。

(2)底层源码剖析

  • 使用ArrayList的无参构造器初始化(源码解析):

  • 使用ArrayList有参构造器(源码解析):

3.练习

主要ArrayList的一些常用方法练习:

 public static void main(String[] args) {
        List list = new ArrayList();
        // add:添加单个元素
        list.add("jack");
        list.add(10);
        list.add(new Integer(10));
        list.add(true);
        System.out.println("list=" + list);
        // remove:删除指定元素 //
        list.remove(0);
        //删除第一个元素
        list.remove(true);
        //指定删除某个元素
        System.out.println("list=" + list);
        // contains:查找元素是否存在 S
        System.out.println(list.contains("jack"));//T
        // size:获取元素个数
        System.out.println(list.size());//2
        // isEmpty:判断是否为空
        System.out.println(list.isEmpty());

        // addAll:添加多个元素
        ArrayList list2 = new ArrayList();
        list2.add("红楼梦");
        list2.add("三国演义");
        list.addAll(list2);
        System.out.println("list=" + list);


        // containsAll:查找多个元素是否都存在
        System.out.println(list.containsAll(list2));

        // removeAll:删除多个元素
        list.add("聊斋");
        list.removeAll(list2);
        System.out.println("list=" + list);//[聊斋]


        //toArray():将列表以数组的形式返回,类型为Object
        Object[] objects = list.toArray();
        System.out.println(objects.toString().toCharArray());

        //iterator():迭代器,集合专用遍历方式
        Iterator iterator = list.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }

    }

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/756314.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-30
下一篇 2022-04-30

发表评论

登录后才能评论

评论列表(0条)

保存