자바(Java) 정렬 질문

자바(Java) 정렬 질문

작성일 2007.11.16댓글 2건
    게시물 수정 , 삭제는 로그인 필요

Model.java

 

public class Model{

          public ArrayList studentList;

         

              studentlist = new ArrayList();

               for(int i=0; i<5; i++){

                   Student a = new Student();

                    studentList.add(a);

              }

}

 

 

Student.java

 

public class Student{

           public int math;

           public int korean;

           public int english;

 

      public Student(){

            math = (int)(Math.random()*100) ;

            korean = (int)(Math.random()*100) ;

            english = (int)(Math.random()*100) ;

     }

 

 

프로그램은 대강 이렇습니다.

 

이렇게 짜면 studentList 에 순서대로 student 1, student 2,...., student 5 이렇게 들어갈텐데요.

 

여기서 student는 수학, 국어, 영어 점수를 가지게 됩니다.

 

그런데 여기서 이 랜덤하게 생성된 점수를 가지고

 

수학 성적 순으로 정렬을 해서,

 

수학 성적이 가장 높은 학생이 studentlist에서 가장 첫 번째 자리를 차지하게 하고,

 

그 다음 사람이 studentlist의 2번째, 이렇게 정렬하고 싶습니다.

 

알려주세요~~!

 

 

 

  



profile_image 익명 작성일 -

studentList와 똑같은 tmpList를 하나 만드신 후

tmpList에서 하나씩 꺼낸 후

정렬알고리즘을 사용하여 정렬시킨 데이터를

studentList에 넣으시면 될것 같습니다.

이론적인 답변이라 짧네요 =ㅂ=

profile_image 익명 작성일 -

Comparable 인터페이스를 구현하면 Collections.sort()메소드를 이용해 정렬을 할수 있습니다.

아래 소스에서는 현재 것과 인자로 받은  Student 클래스의 math값을 비교하여

현재가 크면 1 같으면 0 작으면 -1 을 하면 오름차순 정렬되는데

문제에서는 내림차순을 원하므로 크면 -1 같으면 0 작으면 1을 return 합니다.

public class Student implements Comparable{

 public int math;

 public int korean;

 public int english;

 

 public Student(){

  math = (int)(Math.random()*100) ;

  korean = (int)(Math.random()*100) ;

  english = (int)(Math.random()*100) ;

 }

 

 public int compareTo(Object obj) {
  Student other=(Student)obj;
  if(this.math   return 1;
  else if(this.math==other.math)
   return 0;
  else
   return -1;
 }
}
//테스트 해보면 수학점수로 내림차순되어 나옵니다.

import java.util.ArrayList;
import java.util.Collections;

public class Model{
 public static void main(String args[]){
  ArrayList studentList;
  studentList = new ArrayList();

  for(int i=0; i<5; i++){

   Student a = new Student();

   studentList.add(a);

  }
  Collections.sort(studentList);
  for(Student s:studentList)
   System.out.println(s.math);
 }
}
-------------------------------

Student객체가 수학을 기준으로 정렬되기때문에

하나의 객체에 잇는 수학,국어,영어 점수가 같이 움직입니다.

테스트해 보세요^^*

자바(Java) 정렬 질문

Model.java public class Model{ public ArrayList studentList; studentlist = new ArrayList... 순으로 정렬을 해서, 수학 성적이 가장 높은 학생이...

자바(java) 정렬(Arrays.sort) 사용 질문

import java.util.Arrays; class Test { public static void main(String[] args) { Arrays.sort... 숫자를 정렬하는 간단한 소스인데 1 23 5 9 12 를 입력하면 1 12 23 5 9 로...

자바 정렬 질문...좀요

... import java.util.*; public class DimTest1 { public static void main(String[] args)... 서요 ㅠㅠ 자바로좀 .... 알려주세요.... 정렬까지는...

JAVA자바 합병정렬

자바 합병정렬(머지소트) 소스코드좀 알려주세요..ㅠ 급한데.. 제가 지식인에 질문올리는건 처음이라 내공은 어떻게 드리는건지 잘 모르겠네요... 좀 도와주세요.....

자바 정렬 질문드립니다

import java.util.SortedSet; import java.util.TreeSet; public class TreeSetEx { public static void main(String[] args) { SortedSet set = new TreeSet(); String from...

자바 버블정렬 질문

import java.util.Random; import java.util.Scanner; public class test1{ public static... i++) {//a를 자바에서 오류라고 표현을 하는데 이유가 뭘까 요?...

자바 정렬질문

... import java.util.Scanner; public class Main { public static void main(String... 으로 정렬되게하고싶은데.. 그대로 123465라고 출력되네요...