什么是列表与数组列表?
这两个对象之间的根本区别是什么?一个更有效率吗?一个人有更多的方法吗?
考虑如下行:
List<String> names = new ArrayList<String>();
如果您不熟悉面向对象的体系结构,您可能期望看到类似 .毕竟,您刚刚说过它是新的,所以您不应该将其存储在类型的变量中吗?ArrayList<String> names = new ArrayList<String>();
ArrayList
ArrayList
好吧,你当然可以做到这一点。但是,是一个接口 - 类似于某种模板 - 据说是继承的。这是一个合同,上面写着“每当你使用一个实现时,你可以期望这些方法可用”。在 的情况下,这些方法是 、 等。List
ArrayList
List
List
add
get
但只是 的一个实现。还有其他一些,例如 .两者具有相同的界面,并且可以以相同的方式使用,但在幕后的工作方式却大不相同。其中“随机”访问,这意味着它直接查找数组的特定元素而不循环访问整个列表,必须从第一个元素开始并逐个进行,直到它到达您需要的元素。ArrayList
List
LinkedList
ArrayList
LinkedList
问题是,虽然在创建对象时确实需要指定所需的内容,但通常只需要传达它是一个,所以你只需说这就是它是什么。 表示您有一个集合,该集合旨在按给定的顺序排列。如果您不需要那么多通信,则可以考虑将其作为 传递,这是另一个接口(的超级接口)。或者,如果您只需要进行通信就可以迭代它,您甚至可以将其称为 .List
List
Collection
List
Iterable