我尝试使用字符串的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时,我似乎耗尽了堆空间。我的外循环似乎只运行一次,但我无法弄清楚到底出了什么问题。
谢谢!
答案 0 :(得分:0)
每次进入内部for
循环时,都会向newList
添加一个新元素。由于循环条件指定在j < newList.size()
期间继续,j
的开头小于大小,并且您每次都添加一个,j
永远不会达到newList.size()
并且您保持添加元素直到堆空间用完。