LinkedList和ArrayList的实现有什么不同?
LinkedList和ArrayList的实现有什么不同?
这个问题已经有了答案:
可能重复:
我看了一下ArrayList和LinkedList的API,它们似乎是相同的。除了它们的性能差异外,在添加、删除和迭代列表方面有什么区别吗?
List arrList = new ArrayList(); List linList = new LinkedList();
列表arrList或linList
的引用实际上实现了相应的类。这到底意味着什么?
admin 更改状态以发布 2023年5月23日
我不完全确定你在问“这到底意味着什么?”时想要表达什么,但是我猜是这样的。
考虑这样的代码:
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。
关于从不同的列表中插入/添加/删除的具体细节,你通常不需要关心。从最终结果的角度来看,它们都以相同的方式运行(例如,使用相同的数据调用相同的方法序列将导致相同的结果,只是内部布局不同)。