【发布时间】:2015-02-05 00:32:18
【问题描述】:
我正在尝试使用字符串的 ArrayList 进行插入排序:
private static ArrayList<String> sortList(ArrayList<String> list) {
ArrayList<String> newList = new ArrayList<String>();
String curWord, curOrdered;
int comparison;
for(int i=0; i < list.size(); i++) {
curWord = (String) list.get(i);
if(newList.isEmpty())
newList.add(curWord);
else {
for(int j=0; j < newList.size(); j++) {
curOrdered = (String) newList.get(j);
comparison = curWord.compareTo(curOrdered);
if(comparison < 0)
newList.add(j, curWord); // problem is here, heap runs out
else
newList.add(curWord);
}
}
System.out.println(i);
}
return newList;
}
但是,当我尝试添加到已排序的 ArrayList 时,似乎堆空间不足。我的外部循环似乎只运行一次,但我无法弄清楚到底出了什么问题。
谢谢!
【问题讨论】:
-
在我看来,您一直在将新列表中的条目添加到新列表中。在这种情况下,您不太可能会用完要添加的条目。
-
做一些调试,你有一个无限循环。
-
您是否尝试过使用调试器查看此内容以了解您的代码此时正在做什么?