2014년 9월 7일 일요일

compare & compareTo

자바에서 객체간의 정렬을 위해서는 Comparator 인터페이스를 구현하고, compare메서드를 오버라이드해야한다.


 @Override
 public int compare(Object o1, Object o2) {
  Student snum1 = ((Student)o1);
  Student snum2 = ((Student)o2);
  
  if(snum1.getNum() > snum2.getNum()){
   return 1;  //순차정렬
  }else if(snum1.getNum() == snum2.getNum()){
   return 0;
  }else{
   return -1;
  }
 }

compare메서드의 두인자간의 비교결과에서 첫번째 결과값이 두번째 결과값보다 클 경우, 1을 리턴하면 순차정렬을 하고, -1을 리턴하면 역순으로 정렬을 한다.


문자열의 정렬을 구현할 경우 (기준:사전적정의에서의 순서), compareTo메서드를 구현한다.

 @Override
 public int compare(Object o1, Object o2) {
  String sc1 = ((Student)o1).getName();
  String sc2 = ((Student)o2).getName();
  
  return sc2.compareTo(sc1);  //역순, 순차정렬인 경우, sc1.compareTo(sc2)
 }

댓글 없음 :

댓글 쓰기