lwjgl에서 실행되는이 재귀 적 BubbleSort 알고리즘을 게임에 추가했습니다. 나는이 클라우드의 속도 인 float로 "Cloud"객체의 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 클래스에서 comparable을 구현하는 것이 좋습니다. Collections.sort()가 처리하도록 컬렉션 (.size)을 유지하기 위해 컬렉션을 사용하고 있습니다. 그래도 자신의 방법을 발명하는 것은 재미 있습니다;) – arynaq