【问题标题】:Array of Linked Lists Java链表数组 Java
【发布时间】:2017-06-19 02:32:23
【问题描述】:

我正在尝试创建一个array of linked lists 我正在尝试编写的程序有一个名称字符串数组,但是有些名称位于数组的相同位置。 例如,如果名称morganarray[0] 中,而john 也在array[0] 中,我如何创建一个允许两个名称存储在同一个索引中的链表。我正在尝试复制separate chaining 冲突解决方案。

是否可以使用LinkedList<String> inkedlist = new LinkedList();

如果我使用它,如何为每个数组索引创建一个新的链表?

for(int i = 0; i < array.length; i++){
            array[i] = new LinkedList();
        }

【问题讨论】:

  • 嗯,你有一个LinkedList 类。是什么阻止您创建 LinkedLists 数组?
  • 你的问题不清楚!
  • 详解,我需要明确什么?
  • 据我了解。您不需要做太多...只需继续将名称添加到访问相同数组位置的列表中。假设你在 arr[0] 中有一个名字。在 arr[0] 处为列表创建一个新节点,然后相应地向该列表添加另一个名称。

标签: java arrays list linked-list


【解决方案1】:

我不知道我是否理解你的问题。这是你的问题。 您正在尝试创建一个链表数组该程序具有名称的“字符串数组”,

:如果你添加正确,你的节点中有String name,你会得到linkedlist。

但是有些名字在数组的“相同位置”。例如,如果名称 morgan 在 array[0] 中,而 john 也在 array[0] 中,我如何创建一个允许两个名称存储在同一个索引中的链表。

:在对象中再添加一个 Sting 怎么样,这就是你想要的?

class Node{
    String firstName;
    String secondName;
    Node next = null;
}

不确定我是否开始正确,但这是我目前所拥有的

:你应该先从构造函数开始,然后进行添加、删除等函数。

public Class CustomList{

    private CustomList head;
    private int index = 0;


    private Class Node{

        private String firstName;
        private String secondName;
        private Node next;

**constructor**
        public Node(String firstName, String secondName){
            this.firstName =  firstName;
            this.secondName = secondName;
            next = null;
        }

    }

**constructor**
    public CustomList(){
        head = null;
    }
}

上面将在CustomList的同一个索引中包含两个String值。 如果我对问题的理解有误,或者您还有任何问题,请随时提出。

【讨论】:

  • 谢谢,唯一的问题是,可能并不总是只有 2 个名字。 100 个名字可以索引到同一个位置
  • 在这种情况下,创建一个列表而不是两个名称值,这样每个节点都包含一个字符串列表,可以是任意数量的名称。如果可以,则在其中声明 ArrayList,否则 String 数组也可以。
【解决方案2】:

这并不像听起来那么简单,但是是的,您可以使用java.util.LinkedList

它要求您将数组声明为LinkedList 的数组或只是List(不是String 的数组)。这有效:

    List<String>[] array = new List[1000];

    for (int i = 0; i < array.length; i++){
        array[i] = new LinkedList<>();
    }

但是,在我实例化数组的地方,我收到一个警告:Type safety: The expression of type List[] needs unchecked conversion to conform to List&lt;String&gt;[]。人们会期望new List&lt;String&gt;[1000] 能够工作,但事实并非如此。它给出了一个错误:Cannot create a generic array of List&lt;String&gt;。数组的元素类型不能是泛型类型。这是一个有历史原因的特殊性,我们只能忍受它。

【讨论】:

    猜你喜欢
    • 2012-07-31
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多