zoukankan      html  css  js  c++  java
  • List和ArrayList的区别

    转载自:https://www.cnblogs.com/aisiteru/articles/1151874.html

    List是一个接口,而ArrayList是List接口的一个实现类。 ArrayList类继承并实现了List接口。 

    List接口不能被构造,也就是我们说的不能创建实例对象,但是我们可以像下面那样为List接口创建一个指

    向自己的对象引用,而ArrayList实现类的实例对象就在这充当了这个指向List接口的对象引用。 

    List list;     //正确   list=null;
    List list=new List();    //   是错误的用法

    List list = new ArrayList();//正确 这句创建了一个ArrayList实现类的对象后把它上溯到了List接口。此时它就是一个List对

    象了,它有些ArrayList类具有的,但是List接口没有的属性和方法,它就不能再用了。(可以调用List和ArrayList都有的方法和属性,属性调用的是接口的属性,方法调用的是自己实现的接口的方法)

    ArrayList list=newArrayList();//正确  创建的对象则保留了ArrayList的所有属性和方法(包含实现了接口list的方法和list中没有的方法和属性)。 

    如果这个样子:
    List a=new ArrayList();
    则a拥有List与ArrayList的所有属性和方法,不会减少
    如果List与ArrayList中有相同的属性(如int i),有相同的方法(如void f()),
    则a.i是调用了List中的i
    a.f()是调用了ArrayList中的f();

    问题的关键:
    为什么要用 List list = new ArrayList() ,而不用 ArrayList alist = new ArrayList()呢?
    问题就在于List有多个实现类,现在你用的是ArrayList,也许哪一天你需要换成其它的实现类,如 LinkedList或者Vector等等,这时你只要改变这一行就行了:
    List list = new LinkedList(); 其它使用了list地方的代码根本不需要改动。
    假设你开始用 ArrayList alist = new ArrayList(), 这下你有的改了,特别是如果你使用了 ArrayList特有的方法和属性。

    所有博客均为自己学习的笔记。如有错误敬请理解。
  • 相关阅读:
    easyui 后台系统引入富文本编辑器的使用
    easyui datagrid 表格动态隐藏部分列的展示
    java ArrayList源码分析(转载)
    propertychange方法
    CSS margin-top 属性
    easyui-textbox input输入框的一种取值方式
    jquery next()方法
    jquery children()方法
    一段简单的表格样式
    常用的排序算法的时间复杂度和空间复杂度
  • 原文地址:https://www.cnblogs.com/tangtang-benben/p/14414854.html
Copyright © 2011-2022 走看看