【发布时间】:2021-07-20 17:42:02
【问题描述】:
我试图创建一个在每个索引中包含一个单链表的 ArrayList。 我正在尝试创建的 outputList 将保存包含已排序字符串的单链表(现在,如果我无法将变量放入单链表并将 SLL 放入 ArrayList,则排序无关紧要)。我很好奇是否可以将单链表添加到 ArrayLists 中。
SinglyLinkedList sList = new SinglyLinkedList();
ArrayList<String> outputList = new ArrayList<String>();
int size = inputList.size();
for(int i = 0;i < (size-1);i++) {
if(i==0) {
outputList.add(sList.addNode(inputList.get(i)));
}
}
inputList 是一个包含字符串的 ArrayList。
SinglyLinkedList 由以下代码定义。
public class SinglyLinkedList {
//From: https://www.javatpoint.com/java-program-to-create-and-display-a-singly-linked-list
class Node{
String data;
Node next;
public Node(String data) {
this.data = data;
this.next = null;
}
}
public Node head = null;
public Node tail = null;
public void addNode(String data) {
Node newNode = new Node(data);
if(head == null) {
head = newNode;
tail = newNode;
}
else {
tail.next = newNode;
tail = newNode;
}
}
public void display() {
Node current = head;
if(head == null) {
System.out.println("List is Empty/Null");
return;
}
System.out.println("Nodes of this singly linked list are: ");
while(current != null) {
System.out.print(current.data + " ");
current = current.next;
}
System.out.println();
}
正如我使用的答案所建议的那样;
List<List<String>> outputList = new ArrayList<>();
List<String> singleList = (List<String>) new SinglyLinkedList();
但是第二行给出了运行时错误,
Exception in thread "main" java.lang.ClassCastException: class SinglyLinkedList cannot be cast to class java.util.List (SinglyLinkedList is in unnamed module of loader 'app'; java.util.List is in module java.base of loader 'bootstrap')
at SinglyLinkedList.main(SinglyLinkedList.java:89)
【问题讨论】:
-
来自移动设备的简短评论,不是完整的答案:任何非原始类型(例如 boolean、char、int)都可以存储在适当类型的数组列表中。这里数组列表的正确类型可能是
ArrayList<SinglylinkedList>或类似的。 -
当您正确使用它们时,您可以将任何对象类型添加到 ArrayList。将 ArrayList 声明为
ArrayList<String>然后尝试添加SinglyLinkedList实例没有任何意义,尤其是当您使用不会返回任何内容的sList.addNode(inputList.get(i))这样做时。
标签: java arraylist singly-linked-list