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 •

List of Articles
No. Subject Author Date Views
22 Android - AlarmManager를 이용해서 서비스 실행 시키는 코드 digipine 2017.10.29 498
21 Android - Browser 에서 Activity 실행하기 file digipine 2017.10.29 713
20 Android - 블루투스 BLE 개발하기 digipine 2017.11.02 16590
19 Android - 슬립모드 (Sleep Mode) 방지 코드 digipine 2017.10.29 2398
18 Android - 이미지(비트맵) 리사이징 digipine 2017.11.01 1308
17 Android 기반 Application Ant 빌드 방법 digipine 2017.10.29 541
16 Android 하드웨어 코덱 포팅하기, OpenCore, OpenMAX digipine 2017.11.03 1610
15 Atomic Operation에 대해서 엉뚱도마뱀 2017.12.18 1227
14 atomic vs volatile vs synchronized file 엉뚱도마뱀 2017.12.18 1186
13 Toolchain Error 'No such file or directory' 해결방법 lizard2019 2019.12.19 1371
12 Ubuntu 16.0.4 openjdk 7 설치방법 lizard2019 2019.12.19 826
11 Ubuntu 기본 쉘 dash 대신 bash로 설정 digipine 2017.11.02 705
10 Ubuntu 리눅스 fastboot 설치 lizard2019 2019.12.13 1505
» [Java] SortedSet과 Comparable을 이용한 정렬(Sort) digipine 2017.10.29 776
8 [안드로이드] 가속도 (Accelerometer)센서 Shake 이벤트 예제 digipine 2017.11.02 1627
7 구글에서 제공하는 안드로이드 개발 기초 학습코스 file digipine 2022.03.18 381
6 안드로이드 Activity간 인자 전달하기 digipine 2017.10.29 994
5 안드로이드 Native C 코드에서 Intent 보내는 방법 digipine 2017.11.02 1298
4 안드로이드 개발시 API Key, 암호화 정보 코드에서 숨기는 방법, Kotlin DSL의 경우 lizard2019 2023.06.20 203
3 안드로이드 시스템 개발시 mmm 커멘드 사용법 digipine 2017.11.01 1169
Board Pagination Prev 1 2 Next
/ 2