Java List与ArrayList 的区别(List list =new Arraylist(); ArrayList<String> arrayList = new ArrayList())

本文主要探讨了List与ArrayList的区别。List是接口,ArrayList是实现List接口的类,List的方法ArrayList都有,但ArrayList新增方法List没有。还分析了`List list = new ArrayList();`和`ArrayList arrayList = new ArrayList<>();`的使用场景,最后提及ArrayList与LinkedList在结构和性能上的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一般想知道List 与ArrayList 的区别可能大部分都是看到了
List list = new ArrayList();

ArrayList arrayList = new ArrayList<>();
想知道它们的区别?
List 是一个接口,如果忘记点击List 跳转到源码里面看下
List的如下
在这里插入图片描述
ArrayList 是一个类 他实现了List 这个接口
在这里插入图片描述
所以List 里面的方法,ArrayList 里面也都有,但是ArrayList 里面新增的方法List 里面是没有的比如从ArrayList源码里面找到一个方法

 /**
     * Trims the capacity of this <tt>ArrayList</tt> instance to be the
     * list's current size.  An application can use this operation to minimize
     * the storage of an <tt>ArrayList</tt> instance.
     */
    public void trimToSize() {
        modCount++;
        if (size < elementData.length) {
            elementData = (size == 0)
              ? EMPTY_ELEMENTDATA
              : Arrays.copyOf(elementData, size);
        }
    }

所以arrayList 可以调用trimToSize方法list 不能
说到了这里我们在来看下
List list = new ArrayList();

ArrayList arrayList = new ArrayList<>();
再说它们之前先说下做List 为什么可以实例化ArrayList,刚才的源码不知道大家看没有看,List 是接口,而接口是不可能实例化接口自己的,ArrayList 是一个类但是它实现了List 这个接口所以我们可以通过实例化ArrayList 来实现List 里面的方法
也即是下面的
List list = new ArrayList();
list会有List的所有属性和方法,不会拥有其实现类ArrayList的独有的属性和方法 (从上面trimToSize方法有说明的)
List 不止有ArrayList 这个一个类实现了它还有LinkedList,Vector等,当我们需要修改的时候只需要修改后List后面的ArrayList即可,充分的提现到List 的扩展性的好处而再看
ArrayList arrayList = new ArrayList<>();
如果要修改的前后都是需要修改的.

什么时候使用 List list = new ArrayList(); ,什么时候使用 ArrayList arrayList = new ArrayList<>();
如果从上面的内容体会的话,基本都已经说了
List list = new ArrayList(); 使用的时候扩展性比较好,list会有List的所有属性和方法,
ArrayList arrayList = new ArrayList<>(); 使用的时候我们首先明确了数据接口,不会变,或者我们需要用到ArrayList 里面的独有的属性和方法,
尽管我们经常使用的是List list = new ArrayList(); 相信我们在开发的过程中,也是经常看到ArrayList arrayList = new ArrayList<>();的使用的,
说到最后忽然想到之前的一个面试题了
ArrayList 与 LinkList 的区别
(偷偷说下,为啥自己的想起来了,当时刚毕也啥也不会,不过ArrayList 自己想到了数组,想到数组就是遍历数据快之类的,LinkList 想到的是链表插入数据快之类的,当时也是稀里糊涂的回答,不过最后面试居然过了,)
ArrayList集合采用数组的结构实现的
优点:遍历集合中的元素,效率很高
缺点:更改集合中的元素,效率相对低
LinkedList集合采用双向链表的结构实现。
优点:更改集合中的元素,效率很高。
缺点:遍历集合中的元素,效率相对低。
好了,礼拜天就回顾到这吧,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值