18439593687mjl

List和ArrayList的区别

  在这个方面我也做了一些研究,简要的分析吧,可以适当借鉴观看

    1.List是一个接口,而ArrayList是List接口的一个实现类。   

    2. ArrayList类是继承AbstractList抽象类和实现List接口的一个实现类。 

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

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

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

List list = new ArrayList();这句创建了一个ArrayList的对象后把上溯到了List。此时它是一个List对象了,有些ArrayList有但是List没有的属性和方法,它就不        能再用了。

  4.而ArrayList list=new ArrayList();创建一对象则保留了ArrayList的所有属性。

这是一个例子:

import java.util.*;

public class TestList{

public static void main(String[] args){

List list = new ArrayList();

ArrayList arrayList = new ArrayList();

list.trimToSize(); //错误,没有该方法。

arrayList.trimToSize();   //ArrayList里有该方法。

 }

一、集合ArrayList

优点:命名空间System.Collections下的一部分。大小是动态扩充与收缩的。在声明ArrayList对象时不需要指定它的长度。ArrayList继承了IList接口,可以很方便的进行数据的添加、插入和移除.

缺点:当向集合插入不同类型的数据后,在进行数据处理时容易出现类型不匹配的错误,使用时需要进行类型转换处理,存在装箱与拆箱操作,造成性能大量损耗的现象。

例如:ArrayList list = new ArrayList();

         list.Add(“aa”);

         list.Add(11);
         list[1] = 123;//修改

         移除list.Remove(123);

         list.RemoveAt(0);

二、泛型List

优点:与集合ArrayList类似且继承IList接口,在声明List集合时也要声明集合内部数据的对象类型,避免了装箱和拆箱的问题。

例如:List<int> list=new List<int>();

          list.Add("abc");

          list[0]=111;//修改

          list.RemoveAt(0);//移除

如果list.Add(“abc”);//编译器就会报错,避免了类型安全问题与装箱拆箱的性能问题。

 

分类:

技术点:

相关文章:

  • 2021-11-29
  • 2021-10-23
  • 2021-05-12
  • 2022-02-19
  • 2021-08-24
猜你喜欢
  • 2021-11-12
  • 2022-12-23
  • 2021-11-29
  • 2021-11-29
  • 2021-12-09
相关资源
相似解决方案