JX405기_비트/자료구조(Data Structure)

Day03-3 Set 정렬 관련 Compartor, Comparable

_하루살이_ 2023. 2. 2. 16:54

implement Compartor

public class BoardDTO implements Comparator {
@Override
public int compare(Object o1, Object o2) {
    if (o1 instanceof BoardDTO && o2 instanceof BoardDTO){
        BoardDTO b1 = (BoardDTO) o1;
        BoardDTO b2 = (BoardDTO) o2;
        return b1.id - b2.id; // 실행되는 메소드 값이 작으면 음수, 같으면 0, 크면 양수
    }
    return 0;
}

implement Comparble

public class BoardDTO implements Comparable<BoardDTO> {
// Comparable<제너릭값> 이 붙은 경우 BoardDTO만 파라미터 값으로 올수 있음

public class BoardDTO implements Comparable {
// 모든 객체가 파라미터로 올 수 있음
// Camparable의 제네릭이 있는 경우
@Override
public int compareTo(BoardDTO b) {
    return this.id - b.id;
}

// Camparable의 제네릭이 없는 경우
@Override
public int compareTo(Object o) {
    if(o instanceof BoardDTO){
    	BoardDTO b = (BoardDTO) o;
        return this.id - b.id;
    }
   return 0;
}

 

sort 클래스 

package day0118;

import model.BoardDTO;

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

public class Ex02Sort {
    public static void main(String[] args) {
        ArrayList<BoardDTO> list = new ArrayList<>();
        Random random = new Random();
        for (int i = 1; i <= 10; i++) {
            BoardDTO b = new BoardDTO();
            b.setId(random.nextInt(500) + 1);
            b.setTitle("제목 " + b.getId());
            list.add(b);
        }

        Collections.sort(list);
        Collections.reverse(list);

        for (BoardDTO b : list) {
            System.out.printf("%d. %s\n", b.getId(), b.getTitle());
        }
    }
}