当前位置:   article > 正文

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

java arraylist 和 arraylist的区别

一般想知道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);
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

所以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集合采用双向链表的结构实现。
优点:更改集合中的元素,效率很高。
缺点:遍历集合中的元素,效率相对低。
好了,礼拜天就回顾到这吧,

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/752623
推荐阅读
相关标签
  

闽ICP备14008679号