Java 基本LinkedList/Iterator程序在没有解释的情况下终止
有人能解释一下为什么下面的代码会导致程序立即终止吗? 在控制台或调试选项卡中几乎没有什么可参考的 提前谢谢 @鲍莫尔:谢谢,那是一个错误。然而,当我添加到ListIterator时,我得到了一个OutOfMemory:Java堆空间异常Java 基本LinkedList/Iterator程序在没有解释的情况下终止,java,linked-list,iterator,Java,Linked List,Iterator,有人能解释一下为什么下面的代码会导致程序立即终止吗? 在控制台或调试选项卡中几乎没有什么可参考的 提前谢谢 @鲍莫尔:谢谢,那是一个错误。然而,当我添加到ListIterator时,我得到了一个OutOfMemory:Java堆空间异常 package Buchalka1; import java.util.Iterator; import java.util.LinkedList; import java.util.ListIterator; public class LinkedList
package Buchalka1;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.ListIterator;
public class LinkedList2 {
//--------------------------------------------------------------------------------------------------
public static void main(String[] args)
{
LinkedList<String> letters = new LinkedList<String>();
addInOrder(letters, "D");
addInOrder(letters, "A");
addInOrder(letters, "B");
printList(letters);
}
//--------------------------------------------------------------------------------------------------
public static void printList(LinkedList<String> list)
{
Iterator<String> iterator1 = list.iterator();
while (iterator1.hasNext()) {
System.out.println("Entry: " + iterator1.next());
}
System.out.println("-----------------------------------------------------");
}
//--------------------------------------------------------------------------------------------------
public static void addInOrder(LinkedList<String> list, String newEntry)
{
ListIterator<String> listIterator1 = list.listIterator();
while(listIterator1.hasNext()) {
int comparison = listIterator1.next().compareTo(newEntry);
if (comparison == 0) {
// newEntry should not be added, because already present.
System.out.println(newEntry + " is already part of the list.");
} else if (comparison > 0) {
// newEntry should be listed before the iterator's current entry.
listIterator1.previous();
listIterator1.add(newEntry);
} else if (comparison < 0){
}
}
listIterator.add(newEntry);
}
//--------------------------------------------------------------------------------------------------
}
包Buchalka1;
导入java.util.Iterator;
导入java.util.LinkedList;
导入java.util.ListIterator;
公共类LinkedList2{
//--------------------------------------------------------------------------------------------------
公共静态void main(字符串[]args)
{
LinkedList字母=新建LinkedList();
阿迪诺德(字母“D”);
addInOrder(字母“A”);
addInOrder(字母“B”);
印刷品清单(信件);
}
//--------------------------------------------------------------------------------------------------
公共静态无效打印列表(LinkedList列表)
{
迭代器迭代器1=list.Iterator();
while(iterator1.hasNext()){
System.out.println(“条目:“+iterator1.next());
}
System.out.println(“-----------------------------------------------------------------------”;
}
//--------------------------------------------------------------------------------------------------
publicstaticvoidaddinoder(LinkedList,stringnewentry)
{
ListIterator listIterator1=list.ListIterator();
while(listIterator1.hasNext()){
int comparison=listIterator1.next().Comparieto(newEntry);
如果(比较==0){
//不应添加新条目,因为已存在。
System.out.println(newEntry+“已经是列表的一部分”);
}否则如果(比较>0){
//newEntry应该列在迭代器的当前条目之前。
listIterator1.previous();
listIterator1.add(newEntry);
}否则如果(比较<0){
}
}
add(newEntry);
}
//--------------------------------------------------------------------------------------------------
}
控制台:
- 线程“main”java.util.ConcurrentModificationException中出现异常 在 java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:966) 位于java.util.LinkedList$ListItr.next(LinkedList.java:888) Buchalka1.LinkedList2.addInOrder(LinkedList2.java:34)位于 Buchalka1.LinkedList2.main(LinkedList2.java:15)
- 已终止LinkedList2[Java应用程序]
- 终止,退出值:1>D:\Programs\java\jdk1.8\bin\javaw.exe (2019年12月17日,16:14:44)
这将帮助您摆脱这个恼人的错误,并使代码更加简洁易读。您可以直接添加到列表中,同时仍然使用迭代器。改用迭代器上的add。