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());
}
}
}