whi*_*win 24
List在接口中,而ArrayList是一个类.
例如,您无法使用此设置:
List<String> list = new List<String>();...因为它是一个界面.
但是,这有效:
ArrayList<String> arrayList = new ArrayList<String>();
另外......你可以像下面的duffymo那样做,这或多或少与实现List接口相同(制作你自己的列表实现).
Ray*_*Ray 19
考虑如下所示的行:
List<String> names = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)
如果您是面向对象体系结构的新手,您可能期望看到类似的东西ArrayList<String> names = new ArrayList<String>();.毕竟,你刚才说它是新的ArrayList,所以你不应该把它存储在一个类型的变量中ArrayList吗?
嗯,你当然可以做到这一点.然而,List一个接口 - 就像一个类型的模板 - ArrayList据说继承.这是一份合同,上面写着"无论何时使用List实现,您都可以期待这些方法可用".在的情况下List,该方法之类的东西add,get等等.
但ArrayList只是一个实现List.还有其他的,比如LinkedList.两者具有相同的界面,并且可以以相同的方式使用,但在幕后工作方式非常不同.ArrayList"随机"访问在哪里,意味着它直接找到数组的特定元素而不遍历整个列表,LinkedList必须从第一个元素开始并逐个进行直到它到达您需要的元素.
问题是,虽然你确实需要在创建对象时指定你想要的东西,但你通常只需要传达它只是一个事实List,所以你只需说它是什么.List传达您有一个集合,该集合旨在按照给定的顺序.如果你不需要那么多的沟通,你可以考虑将它作为一个传递Collection,这是另一个接口(超级接口List).或者,如果你需要沟通的是你可以迭代它,你甚至可以称之为Iterable.
duf*_*ymo 14
List是一个接口; ArrayList是一个实现List接口的类.
接口定义了所需的方法签名,但没有说明它们是如何实现的.
实现接口的类承诺提供具有接口声明的相同签名的方法的公共实现.
| 归档时间: |
|
| 查看次数: |
55677 次 |
| 最近记录: |