Arrays ํด๋์ค์ sortโ(T[] a, Comparator<? super T> c)
๋ฉ์๋๋ฅผ ์ด์ฉํ๋ฉด
Interface Comparator๋ฅผ ํตํด ๊ธฐ๋ณธ ์ ๋ ฌ ๊ธฐ์ค๊ณผ ๋ค๋ฅด๊ฒ ์ ๋ ฌํ ์ ์๋ค.
์ด ๋ compare ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ํ์ฌ ์์ฑํ๋ฉด ๋๋ค. compare ๋ฉ์๋์ return ๊ฐ์ด ์์ ๋๋ 0์ด๋ฉด ๊ฐ์ฒด์ ์๋ฆฌ๊ฐ ๊ทธ๋๋ก ์ ์ง๋๋ฉฐ, ์์์ธ ๊ฒฝ์ฐ์๋ ๋ ๊ฐ์ฒด์ ์๋ฆฌ๊ฐ ๋ณ๊ฒฝ๋๋ค.
Arrays.sort(result, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
// code
}
});
String ํด๋์ค์์๋ ๋ฌธ์์ด ๊ฐ ํฌ๊ธฐ๋ฅผ ๋น๊ตํด์ฃผ๋ compareTo
๋ฉ์๋๊ฐ ์๋ค.
A.compareTo(B) ์ผ ๋, A - B
์์๋ก ํด๋น ๋ฌธ์์ ์์คํค ์ฝ๋ ๊ฐ์ ๋บ ๊ฒฐ๊ณผ๋ฅผ intํ์ผ๋ก ๋ฆฌํดํ๋ค.
๋ฐ๋ผ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์๋ค.
- A < B : return ์์
- A == B : return 0
- A > B : return ์์
์ด ๋ฌธ์ ์์๋ ์ซ์๋ค์ ๋ถ์ฌ ๋ ํฐ ์ซ์๋ฅผ ๋ง๋ค์ด๋ด์ผ ํ๋ค.
์ซ์๋ค์ ๊ฐ๊ฐ Stringํ์ผ๋ก ๋ณํํ์ฌ ๊ฐ ๋ฌธ์์ด๋ค์ ๋ถ์์ ๋์ ๊ฒฐ๊ณผ๋ฅผ ๋น๊ตํ๊ณ , ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ฉด
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค. ๊ทธ๋ผ ((o2 + o1).compareTo(o1 + o2))
์ด๋ผ๋ ์์ด ์์ฑ๋๋ค.
์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
Arrays.sort(result, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return ((o2 + o1).compareTo(o1 + o2));
}
});
์ด๋ ๋๋ค์์ผ๋ก ํจ์ฌ ๊ฐ๋จํ๊ฒ ํํํ ์ ์๋ค.
Arrays.sort(str, ((o1, o2) -> (o2+o1).compareTo(o1+o2)));