Programming/Back-end(Java, JSP)

[Java] Comparator 정리 - 사용법, 예시코드, 정렬기준 여러개일 때

Sujin Lee (Daisy) 2020. 8. 14. 21:06

저번 Comparable 글에 이어 Comparator에 대한 글을 작성해보려 한다. 

 

 

Comparator 

1. Comparator? 

 - 기본적이지 않은 정렬(int/long을 내림차순 정렬, String을 사전역순으로 정렬, 여러개의 기준으로 정렬...)할 때 사용한다. 

 

 

예를 들어, 아래와 같은 리스트가 있다고 치자. 이 리스트는 Book2 클래스로 구성되어 있는데, 이 Book2 클래스는 title(책 제목), author(저자), company(출판사), year(출간년도)로 구성되어 있다.

 

( 단순한 list (int로만 구성되었거나하는 list)를 Comparator를 이용해서 정렬하는 예제는 다루는 블로그 글이 많아서, 이 글에서는 일부러 class로 이루어진 list로 예시를 들었다. )

 

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class ComparatorEx {
	public static void main(String[] args) {
		ArrayList<Book2> list = new ArrayList<Book2>();
		list.add(new Book2("다다다", "나씨", "D출판사", 2015));
		list.add(new Book2("파타고니아 파도가 칠 때는 서핑을", "이본 쉬나드", "라이팅하우스", 2020));
		list.add(new Book2("파타고니아 파도가 칠 때는 서핑을", "이본 쉬나드", "라이팅하우스", 2010));
		list.add(new Book2("코스모스", "칼 세이건", "사이언스북스", 2010));
		list.add(new Book2("코스모스", "칼 세이건", "사이언스북스", 2001));
		list.add(new Book2("가가가", "이작가", "C출판사", 2001));
		list.add(new Book2("가가가가가가", "이작가", "C출판사", 2001));
		list.add(new Book2("파파파파파파", "이작가", "C출판사", 2001));
		list.add(new Book2("니니니니니", "이작가", "C출판사", 2001));
		list.add(new Book2("리리리리리", "이작가", "C출판사", 2001));
		list.add(new Book2("마마마", "이작가", "C출판사", 2001));
		list.add(new Book2("하하하", "이작가", "C출판사", 2001));
		list.add(new Book2("나나나", "김씨", "B출판사", 1923));
	}
}

class Book2 {
    private String title;
    private String author;
    private String company;
    private int year;

    public Book2(String a, String b, String c, int d) {
		this.title = a;
		this.author = b;
		this.company = c;
		this.year = d;
	}
	public String getTitle() {
		return title;
	}
	public String getAuthor() {
		return author;
	}
	public String getCompany() {
		return company;
	}
	public int getYear() {
		return year;
	}
}

 

 

 

 

반응형