๐พ ๋ฌธ์ ์
์ฝํ
๋ฌธ์ ํ๋ค๊ฐ ๋ฐ๊ฒฌํ ๋ค๋ฅธ ์ฌ๋ ์ฝ๋์ ๋ด ์ฝ๋์ ์ฐจ์ด์
๋ด๊ฐ ์ด ์ฝ๋ (ํ์์ ์ฝ๋)
Arrays.sort(targets, (o1, o2) -> o1[1] - o2[1]);
๋จ์ด ์ด ์ฝ๋ (๊ณ ์์ ์ฝ๋)
Arrays.sort(targets, (a, b) -> Integer.compare(a[1], b[1]));
์ ์ด ๋ถ์ Integer.compare() ๋ฉ์๋๋ฅผ ์ผ์๊น?
๐ง ์์ธ
`Arrays.sort(targets, (o1, o2) -> o1[1] - o2[1])` ๋ฐฉ์์ ๋ ์ ์์ ๋บ์
๊ฒฐ๊ณผ๋ฅผ ์ ๋ ฌ ๊ธฐ์ค์ผ๋ก ์ฌ์ฉํ๋ค. ํ์ง๋ง ์ด ๋ฐฉ์์ ์ฝ๊ฐ์ ๋ฌธ์ ์ ์ ๊ฐ์ง๊ณ ์๋ค. ์ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ฉด intํ์ ๋บ์
์ฐ์ฐ ๊ณผ์ ์์ ์ค๋ฒํ๋ก์ฐ(overflow)๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ์๋ค.
์๋ฅผ ๋ค์ด, o1[1] = Integer.MAX_VALUE์ด๊ณ o2[1] = Integer.MIN_VALUE์ด๋ฉด ์ด ๊ฒฝ์ฐ, ์์๊ฐ ๋์ ์ ๋ ฌ์ด ๋น์ ์์ ์ผ๋ก ๋์ํ ๊ฐ๋ฅ์ฑ์ด ์๋ค.
Integer.MAX_VALUE - Integer.MIN_VALUE // ์ค๋ฒํ๋ก์ฐ ๋ฐ์
๐น ์ค๋ฒํ๋ก์ฐ(Overflow)๋?
์๋ฐ์์ int ํ์
์ 32๋นํธ ์ ์์ด๋ฉฐ, ๋ฒ์๋ ์๋์ ๊ฐ๋ค.
Integer.MIN_VALUE = -2,147,483,648
Integer.MAX_VALUE = 2,147,483,647
๋ง์ฝ ํฐ ๊ฐ์์ ์์ ๊ฐ์ ๋บ ๋, ๊ฒฐ๊ณผ๊ฐ int ๋ฒ์๋ฅผ ์ด๊ณผํ๋ฉด ?
โ๏ธ ์์๊ฐ: 2147483647 - (-2147483648) = 4294967295 (int ๋ฒ์์ด๊ณผ)
โ๏ธ ์ค์ ๊ฐ: -1 (์ค๋ฒํ๋ก์ฐ ๋ฐ์)
๐ ์ค๋ฒํ๋ก์ฐ๋ก ์ธํด ์๋๋ ์์์ฌ์ผ ํ ๊ฐ์ด ์์๊ฐ ๋จ.
๐ ๋ฐ๋ผ์ ๋ฐฐ์ด์ด ์๋ชป๋ ์์๋ก ์ ๋ ฌ๋ ๊ฐ๋ฅ์ฑ์ด ๋๋ค.
int[][] targets = {
{1, Integer.MAX_VALUE}, // 2147483647
{2, Integer.MIN_VALUE} // -2147483648
};
// a - b;
// 2147483647 - (-2147483648) = 4294967295 (int ๋ฒ์ ์ด๊ณผ)
โก ํด๊ฒฐ๋ฒ
๐น `Integer.compare(x, y)` ์ฌ์ฉํ๊ธฐ
Arrays.sort(targets, (a, b) -> Integer.compare(a[1], b[1]));
๐น `Integer.compare(x, y)` ๋ด๋ถ ๊ตฌํ ๋ก์ง
public static int compare(int x, int y) {
return (x < y) ? -1 : ((x == y) ? 0 : 1);
}
๐ ์ ๋ฆฌ
โ๏ธ ํญ์ Integer.compare(x, y)์ ์ฌ์ฉํ๋ ๊ฒ์ด ์์ ํ๋ค.
โ๏ธ o1[1] - o2[1] ๋ฐฉ์์ ์ค๋ฒํ๋ก์ฐ ์ํ์ด ์์ด ํผํด์ผํ๋ค.
'Coding > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Eclipse] ๋ด๊ฐ ๋ณด๋ ค๊ณ ๋ง๋ ์ดํด๋ฆฝ์ค ์ ์ฉํ ๋จ์ถํค (12) | 2025.02.05 |
---|---|
[Java] ์๋ฐ Runtime addShutdownHook() ์ ๋ํด ์์๋ณด์ (15) | 2025.02.04 |
[Spring] ์คํ๋ง Spring MVC ํ๋ฆ ์๋ฒฝ ์ ๋ฆฌ: ์ด๋ณด์๋ ์ดํดํ๋ MVC ํจํด (19) | 2025.01.28 |
[JSP & Servlet] URL ๋งคํ (9) | 2025.01.28 |
[Java] ์ฟผ๋ฆฌ์คํธ๋ง ์ผ๋ก ๊ฐ ๋๊ฒจ์ ํ๋ฉด์ ์ถ๋ ฅํ๊ธฐ (15) | 2025.01.26 |