本人一个j2ee菜鸟,在以前写j2se的时候很多的时候用到数组,因为牵扯到很多逻辑上的数,现在做家
ee却发现一个项目很多取存对象都是用List list=new ArrayList();我知道他们有区别,一个是数组结构一个是链表结构。但是其实质是什么?请求解答

解决方案 »

  1.   

    实质就是ArrayList底层就是一个数组,只不过提供了一些便利的API供你操作这个数组,否则你要自己处理,如数组长度不够了要扩容,查找数据等
      

  2.   

    建议楼主看看Arraylist源码, ArrayList其实把数据存储在一个Object数组里,然后所有方法都是针对数组操作的。
    比如addAll调用了System.arraycopy 等等。
      

  3.   

    arraylist是通过底层的对数组的操作来实现的,除了提供了链表的操作接口和自动扩大容量外,底层实现和数组是一回事,包括插入操作的数组元素移动等等
      

  4.   

    ArrayList应该是用数组实现的,功能要比array强大;
    1. Array类型的变量在声明的同时必须进行实例化(至少得初始化数组的大小),而ArrayList可以只是先声明;
    2. Array初始化时必须指定大小;ArrayList则不需要,会指定一个默认长度,并且随着对象个数自动增长;
    3. Array只能存放一种类型的对象,list则没有这个限制,除非使用泛型;
    4. Array不能删除元素,只能置null;ArrayList可以随意add或delete某个元素;
      

  5.   

    LS new ArrayList(10)  他的size是多少?
      

  6.   

    ArrayList的底层结构是一个数组 Object[],与我们普通的数组的差别在于他给我们封装了很多很实用的方法,如add,iterator(),这样功能变强大了,我们使用也方便了。LinkedList的底层实现是链表。像ArrayList与LinkedList的差别与数组与链表的差别一样,当插入时链表就很高效,当查询是数组就很高效,我们不用去遍历整个链表,,,,
      

  7.   

    嗯嗯。List是个接口,而ArrayList是具体实现类,ArrayList封转了一系列的操作,嗯,底层是用数组实现的。
      

  8.   

    可以说ArrayList是个动态数组,集合,array就只是数组,
      

  9.   


    ArrayList 自动扩展、只能存放对象而非原始类型数据、顶一下
      

  10.   

    ArrayList长度可以变
    Array不能变
      

  11.   

    引用坟 http://topic.csdn.net/t/20040909/21/3357649.html赞同里面18楼的