【问题标题】:Creating Linked Lists创建链接列表
【发布时间】:2017-08-09 14:25:43
【问题描述】:

我正在了解LinkedLists,我有点困惑为什么人们手动实现它们,如下面的链接所示:

http://www.newthinktank.com/2013/03/linked-list-in-java/

而不是使用内置方法,例如:

public static void main(String[] args) {

    LinkedList<String> linkedList = new LinkedList<String>();
    linkedList.add("Item 1");
    linkedList.add("Item 2");
    linkedList.add("Item 3");
    linkedList.add("Item 4");

    System.out.println(linkedList);

    System.out.println("-----------------------");

    System.out.println("Added New First Item:" );
    linkedList.addFirst("First Item");
    System.out.println(linkedList);

    System.out.println("-----------------------");

    System.out.println("Added New Last Item:");
    linkedList.addLast("Last Item");
    System.out.println(linkedList);


    System.out.println("-----------------------");

    String firstValue = linkedList.get(0);
    System.out.println(firstValue);
}

我已经研究了很长时间,但我仍然无法理解它。有人可以向我解释一下我给你的链接中显示的示例与此处直接显示的示例之间的区别吗?

【问题讨论】:

  • 学习我猜...自己编写这些函数可以帮助您了解链表的功能。而且我很确定内置方法也执行相同的功能。
  • 通常人们只实现他们自己的链表,因为他们正在学习链表是如何工作的,并且他们得到了实现自己的作业。在一个真正的程序中,几乎没有充分的理由来实现你自己的而不是使用标准的java.util.LinkedList。您只是在浪费时间自己编写它,而且您自己的版本不太可能比过去 20 年来已经使用和测试过数百万次的标准版本得到更好的测试。
  • 该链接是指导性的 - 学生和从事软件开发工作的人可能会被要求在面试期间实施链接列表。在实际的专业环境中,您通常会使用在您的语言标准库中实现的数据结构。
  • 谢谢你,这就是我需要知道的。

标签: java linked-list


【解决方案1】:

数据结构是学习编程语言的常见介绍性主题。大多数计算机科学课程中都有一门专门针对它的课程。这些关于手动实现的教程很可能主要是为了教育目的,而不是为了实现的稳健性。实际上,在常规用例中,我认为没有理由使用任何其他实现,而不是使用 Java.util 类(如果可用)...

当然,“可用时”的警告非常重要。也许您想在 Linked List 类中添加一些特殊功能。这种情况可能需要从头开始,或者使用其他人的通用实现并相应地进行修改。

不过,为了更直接地回答您的问题,我必须说您发布的示例与您链接的网站的实现存在许多差异。

  1. 泛型:Java.util.LinkedList 类可以声明列表中链接的数据类型。
  2. “Link”类:链接站点的实现有这个,而 Java.util 实现不需要这个概念。
  3. 方法:Java.util 实现比链接站点中的实现有更多的方法可供您使用。请参阅the documentation 了解更多信息。

【讨论】:

  • 就像 Jacob 说的,链接列表只是一个以某种方式处理的容器。如果你想要不同的存储功能,你需要自己编写。您的示例试图向您展示如何做到这一点。 java.util 功能通常是最好的方法。我会研究 java.util 是如何做到的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 2015-06-05
  • 2018-10-18
相关资源
最近更新 更多