๋ฆฌ์คํธ๋ก ๊ฐ์ ธ์จ ๊ฐ์ ๊ฐ์ง๊ณ ํน์ ๊ธฐ์ค์ ์ธ์ ์ค๋ฆ์ฐจ์, ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์.
์ ์
- ์ ๋ ฌ ๊ฐ๋ฅํ ํด๋์ค(Comparable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค)๋ค์ ๊ธฐ๋ณธ ์ ๋ ฌ ๊ธฐ์ค๊ณผ ๋ค๋ฅด๊ฒ ์ ๋ ฌ ํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ ์ธํฐํ์ด์ค
- package: java.util.Comparator
- ์ฃผ๋ก ์ต๋ช
ํด๋์ค๋ก ์ฌ์ฉ๋๋ค.
- ๊ธฐ๋ณธ์ ์ธ ์ ๋ ฌ ๋ฐฉ๋ฒ์ธ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ ๋ ๋ง์ด ์ฌ์ฉํ๋ค.
์์
List<Student> list = new ArrayList<>();
Student s1 = new Student(11001244, "์๋ฌด๊ฐ", "์์ธ์ ๊ธ์ฒ๊ตฌ");
Student s2 = new Student(25109435, "๊น๊น๊น", "์์ธ์ ์ค๋๊ตฌ");
Student s3 = new Student(11005338, "์ฌ์ด๋ค", "์์ธ์ ์ํ๊ตฌ");
list.add(s1);
list.add(s2);
list.add(s3);
Collections.sort(list, new StudentCompare());
์ ์ฝ๋๋ฅผ ์คํํ๋ฉด ์๋์ ๊ฐ๋ค.
์ด์ ์ด ์ํ์์ ๊ธฐ์ค์ ์ ์ํด ์ํ๋ ํํ์ ์ ๋ ฌ์ Comparator ๋ก ํด๋ณด์.
//๋ชจ๋ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
list.sort(Comparator.comparing(Student::getNum).thenComparing(Student::getName)
.thenComparing(Student::getAddress));
//์ด๋ฆ๋ง ๋ด๋ฆผ์ฐจ์
Comparator<Student> reverse = Comparator.comparing(Student::getName).reversed();
list.sort(Comparator.comparing(Student::getNum).thenComparing(reverse)
.thenComparing(Student::getAddress));
์ธํฐํ์ด์ค Comparator ๊ฐ์ฒด์ reverse ๋ฅผ ๋ง๋ค์ด ์ ๋ ฌ ๊ธฐ์ค์ ์ ์ํ๊ณ , sort ์ ๋ ฌ์์ ๊ฐ์ฒด๋ฅผ ์
๋ ฅํ๋ฉด ์ ์ํ ๊ธฐ์ค๋๋ก ์ ๋ ฌ๋๋ค.
์ถ์ฒ | https://gmlwjd9405.github.io/2018/09/06/java-comparable-and-comparator.html
์ถ์ฒ | ๋น ์์ผ๋ ๊ฐ๋ฐ์ค