Java Array Sort
์๋ฐ์์ 1์ฐจ์ ๋ฐฐ์ด์ ์ค๋ฆ์ฐจ์ ํ๊ธฐ์ํด์๋ Arrays.sort() ๋ฉ์๋์ ์ธ์๋ก ๋ฐฐ์ด์ ๋ฃ์ด์ ์ฌ์ฉํ๋ฉด ๋์ง๋ง,
2์ฐจ์ ๋ฐฐ์ด์ ์ค๋ฆ์ฐจ์ ํ๋ ค๋ฉด Arrays.sort์์ ๋๋ค์์ ์ด์ฉํ์ฌ ๊ตฌํํ ์ ์๋ค.
1์ฐจ์ ๋ฐฐ์ด(int) ์ ๋ ฌ - ์ค๋ฆ์ฐจ์, ๋ด๋ฆผ์ฐจ์
์ฌ๊ธฐ์ ์ ๊น 1์ฐจ์ ๋ฐฐ์ด(์ ์ํ) ์ค๋ฆ์ฐจ์, ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ฝ๋๋ก ๊ฐ๋จํ ์์๋ณด์.
# ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
int[] arr = {1, 26, 17, 25, 99, 44, 303};
Arrays.sort(arr);
>>>>>๊ฒฐ๊ณผ: [1, 17, 25, 26, 44, 99, 303]
1์ฐจ์ intํ ๋ฐฐ์ด์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ ๋น๊ต์ ๊ฐ๋จํ์ง๋ง, ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ์ ์๋นํ ๊น๋ค๋กญ๋ค.
intํ ๋ฐฐ์ด์ด ์๋๋ผ๋ฉด, ์๋์ ๊ฐ์ด Arrays.sort์ ๋๋ฒ์งธ ์ธ์์ Collections์ reverseOrder()๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋์ง๋ง,
Arrays.sort("๋ฐฐ์ด ๋ช
", Collections.reverseOrder());
intํ ๋ฐฐ์ด์ด๋ผ๋ฉด, int๊ฐ Object ํ์ ์ด ์๋, ๊ธฐ๋ณธํ ํ์ (primitive type)์ด๊ธฐ ๋๋ฌธ์ Object๋ฅผ ์์ํ ํด๋์ค์ ๋ํด์ ์ฌ์ฉ๊ฐ๋ฅํ ์ธํฐํ์ด์ค์ธ Collections๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
๋ฐ๋ผ์ intํ ๋ฐฐ์ด์ Object๋ฅผ ์์ํ๋ Wrapper ํด๋์ค๋ก ๋ฐ์ฑํด์ฃผ์ด์ผ ์ญ์์ ๋ ฌ์ด ๊ฐ๋ฅํด์ง๋ค.
// intํ ๋ฐฐ์ด ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
int[] arr = {1, 26, 17, 25, 99, 44, 303};
Integer[] arr2 = Arrays.stream(arr).boxed().toArray(Integer[]::new); //๋ฐ์ฑ
Arrays.sort(arr2, Collections.reverseOrder());
2์ฐจ์ ๋ฐฐ์ด(int) ์ ๋ ฌ - ์ค๋ฆ์ฐจ์, ๋ด๋ฆผ์ฐจ์
๊ทธ๋ ๋ค๋ฉด 2์ฐจ์ ๋ฐฐ์ด(intํ) ์ ๋ ฌ์ ์ด๋ป๊ฒ ํ๋ ๊ฒ์ผ๊น?
Comparator ์ต๋ช ํด๋์ค ๊ตฌํ, Lambda(๋๋ค์), Comparator.comparing()๋ฑ์ ์ฌ์ฉํ ์ฌ๋ฌ ๋ฐฉ๋ฒ์ด ์์ง๋ง,
์ด ํฌ์คํ ์์๋ ๋๋ค์์ ์ฌ์ฉํ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ๋ค.
์ค๋ฆ์ฐจ์ ์ ๋ ฌ
๋ฐฉ๋ฒ์ ๊ฐ๋จํ๋ค.
Arrays.sort()๋ฅผ ์ฌ์ฉํ๋๋ฐ ์ธ์์ ๋๋ค์์ ์ด์ฉํ๋ค.
์์
int[][] arr = new int[][]{{5,40},{3,50},{1,30},{4,20},{2,10}};
// 2. Lambda ์ฌ์ฉ - Java 8์ด์
Arrays.sort(arr, (o1, o2) -> {
return Integer.compare(o1[0], o2[0]);
});
>>>>>>>>๊ฒฐ๊ณผ: {1,30}, {2,10}, {3,50}, {4,20}, {5,40}
์ด๊ฒ์ ์ด์ฉํ์ฌ์ 0๋ฒ์งธ ์ธ์๊ฐ ๊ฐ์ ๋, 1๋ฒ์งธ ์ธ์๋ก ์ค๋ฆ์ฐจ์ ํ๋ ๋ฒ๋ ์์๋ณด๊ฒ ๋ค.
์์
int[][] arr = new int[][]{{5,50},{5,40},{1,30},{4,20},{2,10}};
// 2์ฐจ์ ๋ฐฐ์ด ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
Arrays.sort(arr, (o1, o2) -> {
//0๋ฒ์งธ ์์๊ฐ ๊ฐ์๋ 1๋ฒ์งธ ์์๋ก ์ค๋ฆ์ฐจ์
if(o1[0]==o2[0]) return Integer.compare(o1[1], o2[1]);
//๋ค๋ฅผ๋ 0๋ฒ์งธ ์์๋ก ์ค๋ฆ์ฐจ์
else return Integer.compare(o1[0], o2[0]);
});
>>>>๊ฒฐ๊ณผ : {1,30},{2,10},{4,20},{5,40},{5,50}
๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ๋ ๊ฐ๋จํ๋ค.(๊ฒฐ๊ณผ๋ ์๋ตํ๊ฒ ๋ค)
์์
// ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
int[][] arr = new int[][]{{5,40},{3,50},{1,30},{4,20},{2,10}};
// 2. Lambda ์ฌ์ฉ - Java 8์ด์
Arrays.sort(arr, (o1, o2) -> {
if(o1[0] == o2[0]) return Integer.compare(o2[1], o1[1]);
else return Integer.compare(o2[0], o1[0]);
});
'Languages | Frameworks > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Java) HashMap์ computeIfAbsent์ ๋ํด(feat. getOrDefault) (0) | 2023.01.27 |
---|---|
Java) List์ ArrayList์ ์ฐจ์ด? (0) | 2022.11.08 |
JPA, JPQL (0) | 2022.09.27 |
์ํธํ ์๊ณ ๋ฆฌ์ฆ ์ข ๋ฅ์ ์ถ์ฒ(SHA, PBKDF2, Bcrypt) + Java ์ ์ฉ ์ํ (0) | 2022.07.18 |
๊ฒ์ํ ๊ธ์ด ์ค๊ฐ์ ์ญ์ ์ > ๋ฒํธ ์ด๊ธฐํํ ์ธ๋ฑ์ฑ ํ๋ ๋ฐฉ๋ฒ (0) | 2022.07.13 |