链接列表、队列与列表的差异



创建这两个对象时有什么区别

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

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

testtest2之间的实际区别是什么?他们两个都LinkedList吗? 是否存在性能差异或使用其中一种的原因?

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

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

通过将LinkedList<String>赋值给类型 List<String> 的变量,您只能访问 List<String> 接口中可用的LinkedList中的方法,这些方法是维护元素序列的正常操作。 例如,如果您需要处理可以在任何地方增长和收缩的元素列表,这将非常有用。

简而言之,这两行创建相同的对象,但打算以不同的方式使用它们。 一个说它需要一个由链表支持的队列,而另一个说它需要一个由链表支持的元素的一般序列。

希望这有帮助!

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

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

test 属于 Queue 类型,test2 属于 List 类型。根据变量的类型,您只能调用在该特定类型上指定的方法。我认为这对你的情况很重要。

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

我觉得它们几乎相同,除了您要公开的方法类型。由于 LinkedList 实现了这两个接口,因此选择其中一个接口将打开对该接口类型的方法的访问。

请查看这些接口方法声明的链接

http://docs.oracle.com/javase/6/docs/api/java/util/Queue.htmlhttp://docs.oracle.com/javase/6/docs/api/java/util/List.html

我不确定性能,尽管我想它应该没有什么不同,因为对象实现很常见。

相关内容

  • 没有找到相关文章

最新更新