List和ArrayList之间的Java关系

时间:2013-10-17 04:15:00

标签: java list arraylist

为什么1ok2compilation error3warning message ListList<E>为原始类型。对泛型类型4的引用应该参数化)而compilation error再次给出1- List<Integer> list = new ArrayList<Integer>()//Ok 2- List<Integer> list = new List<Integer>()//compilation error 3- List<List> list = new ArrayList<List>()//Warning 4- List<Integer> list = new List<Integer>()//Compilation error

{{1}}

6 个答案:

答案 0 :(得分:4)

Listinterface

ArrayList是一个implements List

的课程

List视为可以有多个实施的合同(ArrayListLinkedList

答案 1 :(得分:2)

  1. ArrayList是类,可以实例化。所以,1中没问题。
  2. List是界面。您无法实例化界面。所以,2和4中的编译错误。

答案 2 :(得分:2)

似乎你对Java很新。原因是List是一个界面。如果看到接口的定义,则无法实例化它。 ArrayList是List接口的一个实现,你可以实例化它。

答案 3 :(得分:1)

1 - List<Integer> list = new ArrayList<Integer>()//Ok  

由于ArrayList实施List所以ArrayList is a List,并且可以通过List类型的引用变量指出

2- List<Integer> list = new List<Integer>()//compilation error  

您无法将List的对象创建为interface,而不是类。

3- List<List> list = new ArrayList<List>()//Warning

因为内部List不知道它将存储什么类型的对象,所以它应该类似于

List<List<String>> list = new ArrayList<List<String>>()

删除警告

4- List<Integer> list = new List<Integer>()//Compilation error

您不能将List的对象创建为interface而不是类。

答案 4 :(得分:0)

Listjava.util.collection包中的界面。 您无法实例化接口。

ArrayList是List接口的具体实现。

ArrayList implements List

答案 5 :(得分:0)

在面向对象编程中,我们能够编写实际上并不存在的东西。 List就是其中之一,它是一个界面。接口实际上并没有对代码执行任何操作,而是充当承诺或合同。

创建列表有很多不同的方法 - 有些在某些应用程序中较慢,有些则更快。最受欢迎的两个是ArrayList和LinkedList。 ArrayList在数组中支持您的列表,支持非常快速的索引 - 您可以非常快速地将对象放在位置n。 LinkedLists在添加新对象和取消它们方面更快(实际上并非如此,原因比这更深一些)。在某些情况下,一个可能更好,而在另一些情况下,另一个可能更好。

因此,如果我创建一个遍历列表并获取每个项目中的数据的方法,那么我不依赖于其中任何一个List实现的特殊功能。我应该选择哪一个?我是否应该强制用户从他的LinkedList创建一个ArrayList,因为我随意决定我会使用它?

列表就是这里的答案。我没有对他们如何创建列表做任何假设,我所做的只是依赖于我知道将在每个列表中的一些方法,所以我不会让用户符合我。但List本身没有任何实例化 - 当你调用new List()时,它是什么意思?嗯,这没有任何意义。

但是,你可以做到

List<String> stringList = new ArrayList<String>()

为什么?我实际执行List,ArrayList时会调用'new'。这不是它的常用用法,但它是允许的,因为那里实际上有一个真正的列表 - 而不仅仅是列表的承诺。