2013-09-21 3 views
0

배열을 정렬하는 데 사용한 비슷한 알고리즘을 구현하여 ArrayList를 정렬하려고합니다. 나는 Collects.sort를 사용할 수 있다는 것을 알고 있지만, 아직 초보자이므로 코드를 작성하고 배울 것입니다. 배열 목록에 저장된 두 개의 정수 객체 값을 비교합니다. 이것은이 메소드에 대한 참조를 통해 인수로 전달되는 점수 배열을 가진 내 코드입니다. 지금이 코드는 적절하게 정렬되지 않고 모든 첨자에서 배열에 가장 낮은 숫자를 삽입합니다. 사이드 노트에서 나는 인덱스 j에서의 스코어와 compareTo() 메쏘드의 인덱스를 비교할 수있는 방법이 궁금했습니다. 객체가 아닌 프리미티브를 비교할 때 캐스팅보다 나은 해결책이라고 생각했습니다. 고맙습니다!ArrayList 배열과 동일한 Algo로 배열

 int smallest; 
    for (int i = 0; i < 5; i++) 
    { 
     smallest = i; 
     for (int j = i; j < scores.size(); j++) 
     { 
      if ((Integer) scores.get(j) < (Integer) scores.get(smallest)) 
       smallest = j; 
     } 

     int temp = (Integer) scores.get(i); 
     int swap = (Integer) scores.get(smallest); 
     scores.add(i, swap); 
     scores.add(smallest, temp); 

    } 
+0

정렬 컬렉션 인터페이스를 사용하여 목록. –

답변

0

지금이 코드가 제대로 정렬되는 것이 아니라 모든 첨자의 배열에 가장 낮은 번호를 삽입.

요소를 바꾸려면 add() 대신 메서드를 사용해야합니다. 내가

캐스팅 이상인 나는 그것이 더 나은 해결책이 될 것입니다 느낌이 프리미티브 객체를 비교 이대로가은 compareTo() 메소드 인덱스 J 인덱스 가장 작은에서 점수를 비교할 수 있는지 궁금 보조 노트에

new ArrayList<Integer>과 같이 컬렉션에 대해 explit 유형을 지정하면 쉽게 전송할 수 있습니다.

수집 모두 함께 여기 수정 된 코드입니다 :

ArrayList<Integer> scores = new ArrayList<Integer>(); 
    scores.add(5); 
    scores.add(4); 
    scores.add(2); 
    scores.add(1); 
    scores.add(3); 
    System.out.println(scores); 
    int smallest; 
    for (int i = 0; i < scores.size(); i++) 
    { 
     smallest = i; 
     for (int j = i; j < scores.size(); j++) 
     { 
      if (scores.get(j) < scores.get(smallest)) 
       smallest = j; 
     } 

     int temp = scores.get(i); 
     int swap = scores.get(smallest); 
     scores.set(i, swap); 
     scores.set(smallest, temp); 

    } 
    System.out.println(scores); 
+0

감사합니다! 매우 감사. – user2771729

+0

대답을 승인 된 것으로 표시하십시오. – Jk1

관련 문제