Difference in LinkedList and ArrayList implementation?
Possible Duplicate:
When to use LinkedList<> over ArrayList<>?
我看到了arraylist和linkedlist的API,它看起来是相同的。除了性能差异之外,在添加、删除和迭代列表方面还有任何差异。
1 2 3 |
列表
就你的第一个问题而言:他们的性能和内存使用对你来说唯一重要的区别(第三个问题,他们的实际实现细节,不是你关心的)
至于你的第二个问题:引用是"实际实现列表"的说法是错误的,所以我不知道如何回答它。引用变量引用实现
当你问"这到底是什么意思"时,我不完全确定你的意思。但是这里有一个猜测。
考虑这样的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | 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"方法。
因此,在您的示例中,arrlist和linlist都可以访问列表接口中的任何方法,但是它们除了列表接口之外提供的任何方法都不能在没有强制转换的情况下调用。您可以(并且在大多数情况下应该)将ArrayList和LinkedList视为列表。
对于从不同列表中插入/添加/删除的细节,通常不应该在意。从最终结果的角度来看,两者的行为都是相同的(例如,具有相同数据的相同方法调用序列将导致相同的结果,只是内部布局不同)。
在Java教程中,对这两个列表实现的优缺点有一个很好的讨论。请参见有关列表实现的主题。