我将此递归BubbleSort算法添加到我在lwjgl上运行的游戏中。我试图用一个浮点数来排序“云”对象的ArrayList,这是这个云的速度。BubbleSort StackOverflowError
出于某种原因,有时我会在我调用本身的方法的行处得到一个“java.lang.StackOverflowError”。
下面的代码:
public void sort() {
for (int i = 0; i < clouds.size() - 1; i++) {
Cloud cl1 = clouds.get(i);
Cloud cl2 = clouds.get(i + 1);
if (cl1.getSpeed() < cl2.getSpeed()) {
continue;
}
clouds.set(i, cl2);
clouds.set(i+1, cl1);
this.sort();
}
}
,这里是我得到的错误:
Sat May 04 20:28:45 CEST 2013 ERROR:null
java.lang.StackOverflowError
at backgrounds.Clouds.sort(Clouds.java:224)
[...] // The line above is repeated for some hundred times.
我推荐在你的Cloud类中实现可比较的,你使用一个集合来保存它看起来像的云(.size),所以Collections.sort()会为你处理它。发明自己的方法虽然很有趣;) – arynaq 2013-05-04 18:55:20