【问题标题】:linked list of linked lists java链表链表 java
【发布时间】:2017-05-01 10:38:16
【问题描述】:

所以我正在制作一个应用程序,我需要使用链表的链表。 这是我当前的代码:

public class server{
private List <Group> serverList= new List <Group>();

现在,在“组”类中:

List <user> groupList= new List <user>();
groupList(1)=new Node (null, T x);

而且,它只是不起作用......在我完成这个之后,使用其他节点能力会更容易。 我只是一个高中生,所以不要评判我。 我正在使用 unit4 包

edit unit4 是 Eclipse 的扩展包,由以色列教育部制作。该包允许您使用 Node、List、Stack、Queue 和 BinTreeNode,而不必每次都实际写下来。

【问题讨论】:

  • "it just does not work" 是什么意思?这并不能告诉我们您遇到了什么问题
  • 由于List 是一个接口,您不能创建new List() .... 您应该使用实现List 接口的类之一对其进行初始化。例如,new LinkedList&lt;&gt;(); 应该可以工作
  • 谢谢,帮了我很多忙!它停止对我尖叫。现在,使用列表会容易得多。
  • 我会推荐使用ArrayList 而不是LinkedList,除非您对后者有非常具体的原因(例如作业中的要求)。对于几乎所有用途,ArrayList 性能更好。无论如何,任何一个都应该工作,你不必担心性能。

标签: java collections linked-list


【解决方案1】:

我想,你的List&lt;User&gt;java.util.List 如果这是正确的,那么这就是一个接口——只是一个类可以向其用户保证的一种“契约”。

您不能实例化接口,只能实例化该接口 - 例如java.util.LinkedList

在分配的左侧,最通用的接口可能是一件好事,在分配的右侧,您必须指定您想要的该接口的实现。在你的情况下,这可能看起来像

import java.util.List;
import java.util.LinkedList;


List<User> = new LinkedList<>();

(我故意省略了第二个&lt;User&gt;,只写了&lt;&gt;,因为从Java版本7开始,它是允许的,并且是提高可读性的良好做法。)

代码中的下一个错误是,您无法设置 List 元素

groupList(1)=new Node (null, T x);

分配元素的方法是public E set(int index, E element),其中E是列表元素的类型。所以你的代码看起来像

groupList.set(1, new Node(null, T x));

其中还有一些错误。

首先,列表从索引 0(零)开始,因此要填充第一个元素,您将调用 groupList.set(0, ...),这又是不正确的。 Set 仅替换已经存在的元素,但如果索引超出列表的现有边界,则会引发异常。要添加新元素,您必须使用方法public void add(int index, E element)

groupList.add(new Node(null, T x));

这会将 Node 类的新对象添加到您(当时为空)列表的末尾。

仍然有错误 - 调用new Node(null, T x)。似乎您从文档或声明中复制了它,但没有正确填写所有参数。第二个参数 (T x) 表明构造函数需要一些 T 类型的对象(这是一种泛型变量,与 List&lt;User&gt; 中的参数 User 一样)。

由于您没有在您的问题中给我们Node 的包(我不知道“uni4 包”,所以也许解决方案就在那里)我无法为您提供太多帮助。

您也可以在此处输入 null 作为参数 - 如果这足以满足您的需要。

groupList.add(new Node(null, null));

如果编译器无法编译,您可以将第二个参数转换为类型:

groupList.add(new Node(null, (String)null));

看起来很奇怪,但有时编译器需要提示 ;-)。

如果您更新您的问题,提供有关您必须解决的问题的更多详细信息,我可以在这里为您提供更具体的帮助。

【讨论】:

    猜你喜欢
    • 2012-06-18
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    • 2023-03-22
    • 2013-02-11
    • 2019-05-02
    相关资源
    最近更新 更多