Post

[java] lambda



🔃 Java 람다식으로 2차원 배열 정렬하기 (오름차순 / 내림차순)

✅ 정렬 기준

  • x 오름차순 → x가 같으면 y 오름차순
  • x 내림차순 → x가 같으면 y 내림차순

1
2
3
4
5
6
7
8
9
10
11
12
13
		int N = Integer.parseInt(br.readLine());
		
		// x,y 좌표를 저장할 배열 new int[N][2];
		int[][] pos = new int[N][2];
		
		for (int i = 0; i < N; i++) {
			String[] xy = br.readLine().split(" ");
			int x = Integer.parseInt(xy[0]);
			int y = Integer.parseInt(xy[1]);
			pos[i][0] = x;
			pos[i][1] = y;
		}
		System.out.println(Arrays.deepToString(pos));

🎯 예제 입력

5
3 4
1 1
1 -1
2 2
3 3
# 출력값

[[3, 4], [1, 1], [1, -1], [2, 2], [3, 3]]

🔼 오름차순 정렬 (x 오름차순 → x 같을 경우 y 오름차순)

1
2
3
4
5
6
Arrays.sort(pos, (a, b) -> {
	if (a[0] == b[0]) {
		return Integer.compare(a[1], b[1]); // y 오름차순
	}
	return Integer.compare(a[0], b[0]);     // x 오름차순
});

🔹 예제 출력

StringBuilder로 출력

1 -1
1 1
2 2
3 3
3 4

🔽 내림차순 정렬 (x 내림차순 → x 같을 경우 y 내림차순)

1
2
3
4
5
6
Arrays.sort(pos, (a, b) -> {
	if (a[0] == b[0]) {
		return Integer.compare(b[1], a[1]); // y 내림차순
	}
	return Integer.compare(b[0], a[0]);     // x 내림차순
});

🔹 예제 출력

StringBuilder로 출력

3 4
3 3
2 2
1 1
1 -1

🧐 참고: Integer.compare() 사용 이유

비교식설명
Integer.compare(a, b)a < b면 -1, 오름차순 기준
Integer.compare(b, a)a < b면 1, 내림차순 기준

📈 → 조건문 없이 간각하고 명확한 정렬 기준 구현 가능!

This post is licensed under CC BY 4.0 by the author.
3D GIF

Trending Tags

도움이 필요하면
나를 눌러 구리🐻
챗봇
너굴
bot
어서와 구리 ʕ ·ᴥ·ʔ
무엇이 필요하셔 구리?

Trending Tags

도움이 필요하면
나를 눌러 구리🐻
챗봇
너굴
bot
어서와 구리 ʕ ·ᴥ·ʔ
무엇이 필요하셔 구리?