Java中无需集合的键值数据结构

Java中无需集合的键值数据结构,java,data-structures,singly-linked-list,Java,Data Structures,Singly Linked List,我已经为字符串类型编写了一个单独排序的链表。 让我告诉你我必须做什么 有一些单词要存储在已排序的linkedlist中。 每个单词都有一些变体(或含义供参考),这些变体也需要存储在单独排序的链表中 所以基本上链表中的每个单词都有一个变体链表 问题是如何连接它们。 我的意思是,删除这个词也会删除它们的变体 任何帮助都将不胜感激。 先谢谢你 更新: 下面是已排序的LinkedList: public class LinkedList { private Node start = null; pr

我已经为字符串类型编写了一个单独排序的链表。 让我告诉你我必须做什么

有一些单词要存储在已排序的linkedlist中。 每个单词都有一些变体(或含义供参考),这些变体也需要存储在单独排序的链表中

所以基本上链表中的每个单词都有一个变体链表

问题是如何连接它们。 我的意思是,删除这个词也会删除它们的变体

任何帮助都将不胜感激。 先谢谢你

更新: 下面是已排序的LinkedList:

public class LinkedList {

private Node start = null;

private class Node{
    private String value = null;
    private Node next = null;
}
public void insert(){
   // This method will loop from head and inserts in ascending order
}
}
// And other methods like delete etc...
以下是我正在尝试做的事情:

public class Demo {

public class Word {
    private String stringWord;
    private LinkedList variations;
}

private LinkedList Words;

注意:不允许使用任何API或集合

您可以对LinkedList使用java泛型,如下所示

public class LinkedList<T> {

    private Node start = null;

    private class Node {
        private T value = null;
        private Node next = null;
    }
}

// for string type
LinkedList<String> variations = new LinkedList<String>();
// for word type
LinkedList<Word> words = new LinkedList<Word>();
公共类链接列表{
私有节点start=null;
私有类节点{
私有T值=null;
私有节点next=null;
}
}
//对于字符串类型
LinkedList变体=新建LinkedList();
//字型
LinkedList单词=新建LinkedList();
因为您想要一个与主列表中的每个单词相关联的“变体”列表,所以主列表需要是一个
单词
对象的列表,而不仅仅是一个普通
字符串
对象的列表

假设您已经了解了泛型,这意味着您需要更改
链接列表
类以使用“类型参数”而不是硬编码
字符串
,这样
可以是
(对于主列表)或
字符串
(对于变体列表)

由于需要对列表进行排序,因此需要将类型参数设置为可比较的,因此代码变为:

public class LinkedList<E extends Comparable<E>> {
    private Node start = null;

    private class Node{
        private E value = null;
        private Node next = null;
    }

    public void insert(E newValue){
        // code here, e.g.
        //   node.getValue().compareTo(newValue)
    }
}

public class Word implements Comparable<Word>{
    private String stringWord;
    private LinkedList<String> variations;

    @Override
    public int compareTo(Word that){
        return this.stringWord.compareTo(that.stringWord);
    }
}

// main list
LinkedList<Word> words;
公共类链接列表{
私有节点start=null;
私有类节点{
私有E值=null;
私有节点next=null;
}
公共作废插入(E新值){
//代码在这里,例如。
//node.getValue().compareTo(newValue)
}
}
公共类Word实现了可比较的{
私有字符串字符串;
私有链接列表变体;
@凌驾
公共整数比较(单词that){
返回this.stringWord.compareTo(that.stringWord);
}
}
//主列表
链接词;

家庭作业问题要求您向我们展示您的尝试外部列表不应该是
列表
,而是
列表
,其中
单词
有两个字段,即单词本身(
字符串
)和变体列表(
列表
)。@Andreas如何使用比较器或comparable按字符串对列表进行排序。怎样?我还必须使用相同的链表对列表进行排序。其中我的Linkedlist只存储字符串。@RobbyGoz您可以制作
Word
implement
Comparable
。然后排序
列表
列表
变得同样简单,因为您实际上是在排序
List@Andreas我已经更新了问题,请按照你说的修改来添加答案。我不知道,请阅读我的问题,限制使用任何API或集合。那么您打算使用什么来对列表进行排序?在插入时,它将从头部循环并按升序插入。在LinkedList insert()方法中,首先要做的是创建一个单独排序的链表,它可以存储任何类型,如字符串或对象。但如何按字段对对象进行排序呢?您可以使用java泛型来创建任何类型的链表,如果您有自己的排序函数,那么在比较对象时,您可以使用自己的比较方法。并且还可以在Word类中重写toString(),该类将返回stringWord,因此在按值打印LinkedList时。toString()将打印单词。