LinkedList和ArrayList实现的区别?
  可能重复: 
  何时通过ArrayList <>使用LinkedList <>? 
我看到了ArrayList和LinkedList的API,它看起来是一样的。 除了它们的性能差异之外,在添加,删除和迭代列表方面还有什么不同。
List arrList = new ArrayList();
List linList = new LinkedList();
  List arrList or linList引用实际上正在实现相应的类。  这实际上意味着什么? 
当你问到“这究竟是什么意思?”时,我不是100%确定你的意思,但这是一个猜测。
考虑这样的代码:
interface Interface
{
   void foo();
}
class Implementation
    implements Interface
{
    public void foo() { }
    public void bar() { }
}
public class Main
{
    public static void main(final String[] argv)
    {
        Interface a;
        Implementation b;
        a = new Implementation();
        b = a;
        a.foo();
        b.foo();
        a.bar(); <-  won't compile
        b.bar();
    }
}
接口a; 和实施b; 都指向相同的对象,但只有对“b”的引用才能访问“bar”方法。
因此,在你的例子中,List接口中的任何方法都可以被arrList和linList访问,但是除了List接口之外,他们提供的任何方法都不会被调用,而无需强制转换。 你可以(也应该在大多数情况下)把ArrayList和LinkedList当作List来处理。
对于从不同列表中插入/添加/删除的细节,您通常不应该在意。 从最终结果的角度来看,两者的行为方式都是相同的(例如,使用相同数据的同一系列方法调用会得到相同结果,只是内部布局会不同)。
  就你的第一个问题而言:它们的性能和内存使用情况对你来说唯一的区别(第三个,它们的实际实现细节不是你关心的问题) LinkedList使用更多的内存,从头部走过名单的第二十二个元素非常缓慢;  但就添加和删除列表中的元素而言,它们非常棒。  ArrayList使用更少的内存,获得第22个元素的速度非常快 - 但在中间插入或移除元素需要的时间与列表大小成正比。 
  至于你的第二个问题:引用是“实际执行列表”的说法是错误的,所以我不知道如何回答它。  引用变量是指实现List接口的对象;  这两个类都实现了这个接口,所以List类型的引用可以引用任何一个类的对象。 
Java教程中对这两个List实现的优缺点进行了很好的讨论。 请参阅列表实现的主题。
链接地址: http://www.djcxy.com/p/19965.html