logo

English

이곳의 프로그래밍관련 정보와 소스는 마음대로 활용하셔도 좋습니다. 다만 쓰시기 전에 통보 정도는 해주시는 것이 예의 일것 같습니다. 질문이나 오류 수정은 siseong@gmail.com 으로 주세요. 감사합니다.

[Java] SortedSet과 Comparable을 이용한 정렬(Sort)

by digipine posted Oct 29, 2017
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print

자바에서는 정렬을 위핸 특별한 SortedSet 클래스를 제공합니다. 사용법도 간단하고 매우 편리합니다.
먼저 Comparable 을 상속 받은 자료 구조 클래스를 만든 다음 SortedSet으로 Add 하면 정렬되는 방식입니다.
자세한 사용법은 아래 소스를 참조하세요.
그리고 ... SortedSet은 List 와 달리 중복되는 데이터를 허용하지 않습니다. 반드시 중복되지 않는 자료 저장에 사용하십시오.


import java.util.Iterator;
import java.util.Random;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;

public class Zealot implements Comparable {

             private int strength;
             private int shields;
            
             public Zealot(int strength,int shields) {
                           this.strength = strength;
                           this.shields = shields;        
             }
             public int getStrength() {
                           return strength;
             }
             public int getShields() {
                           return shields;
             }
             

             public int compareTo(Object o) { // 작은 수 부터 오름 차순으로 정렬 리턴 값 -1, 1을 바꾸면 내림 차순
                           Zealot z = (Zealot)o;
                          
                           if (z.getStrength() > strength)
                                        return -1;
                           else if (z.getStrength() == strength)
                                        return 0;
                           else
                                        return 1;
             }
            
             public static void main(String[] args) {

 
                           Random random = new Random();
 
                           SortedSet s = new TreeSet();

                           for(int i = 0; i < 10; i++)
                            s.add(new Zealot(random.nextInt(100),random.nextInt(100)));                    

                           for(Iterator it = s.iterator(); it.hasNext();) {
                                        Zealot z = (Zealot)it.next(); 
                                        System.out.print(z.getStrength() + " ");
                           }
                           System.out.println();
                          
                           while(!s.isEmpty()){  // Queue와 같은 방법으로 사용시에는 이렇게 해주면 됩니다.
                            Zealot z = (Zealot)s.first();
                            System.out.print(z.getStrength() + " ");
                            s.remove(z);
                           }
                           System.out.println();     
                          
             }
}

실행 결과
2 33 43 44 52 57 80 87
2 33 43 44 52 57 80 87 

TAG •