Java 我需要创建自己的简单LinkedList
我不知道如何将许多组件添加到我的Java 我需要创建自己的简单LinkedList,java,linked-list,Java,Linked List,我不知道如何将许多组件添加到我的列表中以及如何解决它们 public class Element { public Object object; public int index; public Element(Object object){ this.object = object; } } public class LinkedList { private Element element; private int nextLi
列表中以及如何解决它们
public class Element {
public Object object;
public int index;
public Element(Object object){
this.object = object;
}
}
public class LinkedList {
private Element element;
private int nextLink = 0;
private int prevLink;
private int index;
public void add(Object newElement) {
nextLink++;
prevLink++;
this.index = nextLink - prevLink;
if (nextLink == 0) {
prevLink=0;
this.index = 0;
}
else {
prevLink++;
this.index = nextLink - prevLink;}
nextLink++;
System.out.println(element);
Element element = new Element(newElement);
this.element = element;
if (nextLink == 0) {
prevLink=0;
this.index = 0;
}
else {
prevLink++;
this.index = nextLink - prevLink;}
nextLink++;
System.out.println(element);
}
public void get(int index) {
}
public void remove(int index) {
}
}
public class Main {
public static void main(String[] args) {
LinkedList linked = new LinkedList();
linked.add("234");
linked.add("255");
linked.add("1");
System.out.println(linked);
linked.get(1);
}
}
我有一个大问题,因为我的列表上只有一个元素,当我想添加新元素时,我的旧元素会被重写。我不知道如何更正此问题:((通常在链接列表中,元素包含对列表中下一个元素的引用。您的元素
类似乎无法引用列表中的下一个元素
链接列表上的维基百科条目可能是一个很好的起点:每个元素都必须包含指向下一个元素的链接。索引是不必要的,而且会产生反作用
首先将元素类重写为:
public class Element {
public Object object;
public Element next;
public Element(Object object){
this.object = object;
}
}
我建议创建类似的内容。您需要对下一个元素的引用。如下面的代码所示
E是泛型类型。它允许您创建列表节点,如代码Listnode l;
中所示。泛型的好处是您可以同样轻松地创建整数的Listnode。如下所示。Listnode integerList;
public class Listnode<E> {
//*** fields ***
private E data;
private Listnode<E> next;
//*** constructors **/
// 2 constructors
public Listnode(E d) {
this(d, null);
}
public Listnode(E d, Listnode n) {
data = d;
next = n;
}
//*** methods ***
// access to fields
public E getData() {
return data;
}
public Listnode<E> getNext() {
return next;
}
// modify fields
public void setData(E d) {
data = d;
}
public void setNext(Listnode<E> n) {
next = n;
}
}
公共类Listnode{
//***田地***
私人电子数据;
私有listnodenext;
//***建设者**/
//2名施工人员
公共列表节点(ED){
这(d,null);
}
公共Listnode(ED,Listnode n){
数据=d;
next=n;
}
//***方法***
//访问字段
公共E getData(){
返回数据;
}
公共Listnode getNext(){
下一步返回;
}
//修改字段
公共无效设置数据(ED){
数据=d;
}
public void setNext(Listnode){
next=n;
}
}
这样做是为了真正实现这一切
现在,此代码创建了一个新节点。此节点称为“l”,l指向一个“节点”,该节点将值“ant”作为字符串保存。您现在还可以看到下一个值为null,如“\”所示
您还可以随意设置/更改值
元素应保留对列表中下一个元素的引用。.阅读LinkedList的源代码如果你想知道它是如何工作的,你不能只使用System.out.println(linked);并期望它输出你的列表。你必须使用LinkedList.get()迭代你的所有列表项(你还必须实现这个函数)谢谢。如果你能告诉我如何打印我的元素,我将非常感激,因为我只有这样的元素Element@d1c9b5linksI试图这样做,但没有成功..:(字符串值=(字符串)列表;这是因为这是内存地址。你需要让你的元素类能够获取数据。我推荐一些如我的代码中所示的东西。我很高兴向你解释。我包括了概念图片谢谢,但现在我正在学习这门课程,我们的老师没有解释这是什么。我们只能使用我们已经使用的东西赚得:(E是一种泛型类型。它允许您创建代码Listnode l中所示的列表节点;泛型的好处是您可以同样轻松地创建一个整数Listnode。就像这样。Listnode integerList;@user3369372这是否澄清了?不要害怕,非常感谢您的解释。我认为我理解,但我不是苏re:))泛型允许您在Listnode中使用任何基元类型