2013-03-25 61 views
20

什么是创建时的区别这两个对象差异的LinkedList,排队VS列表

Queue<String> test = new LinkedList<String>(); 

List<String> test2 = new LinkedList<String>(); 

什么是testtest2之间的实际差异?他们都是LinkedList?是否存在性能差异或使用某一方的原因?

+0

@ BheshGurung-你确定吗?我很确定这两个都是合法的Java代码。 – templatetypedef 2013-03-25 05:10:33

+1

他们不编译,因为他们缺少一个(),不是因为分配将是非法的:) – Affe 2013-03-25 05:11:24

+0

ok()已更正 – 2013-03-25 05:12:34

回答

33

您编写的两个语句构造一个LinkedList<String>对象来存放一个字符串列表,然后将其分配给一个变量。区别在于变量的类型。

通过分配LinkedList<String>Queue<String>到类型的变量,则只能访问在LinkedList是在Queue<String>接口,其包括用于排队和出队的元件支持可用的方法。如果您需要编写一个使用队列进行各种操作的程序,并希望通过使用链接列表来实现该队列,这将非常有用。

通过分配LinkedList<String>List<String>类型的变量,则只能访问在LinkedList是在List<String>界面中可用的方法,这是用于保持元素的序列的正常操作。例如,如果您需要处理可随时随地增长和缩小的元素列表,这将非常有用。

总之,两条线创建相同的对象,但打算以不同的方式使用它们。一个人说,它需要一个由链表支持的队列,而另一个则表示它需要链接列表支持的一般元素序列。

希望这会有所帮助!

3

在这两种情况下,您正在实例化LinkedList

区别在于用于引用这些实例的变量的类型。

test类型Queuetest2List类型。根据变量的类型,您只能调用在该特定类型上指定的方法。我认为这对你的情况至关重要。

在性能方面,它将会是相同的,因为您在两种情况下使用的实际实现是相同的(LinkedList)。