
일반적으로 배열 정렬할때 쓰는 메서드 `Arrays.sort()` 기본값으로 오름차순으로 정렬된다.
하지만 내림차순으로 정렬하고 싶을 때 `Arrays.sort()`에 `Comparator` 객체를 인자로 받아서 맞춤형 정렬을 수행할 수 있다.
기본 `Arrays.sort()`사용
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
Integer[] arr = {5, 2, 9, 1, 3};
// 기본 정렬 (오름차순)
Arrays.sort(arr);
System.out.println(Arrays.toString(arr)); // 출력: [1, 2, 3, 5, 9]
}
}
배열 사용자 정렬 : `Comparator` 사용
import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
Integer[] arr = {5, 2, 9, 1, 3};
// 사용자 정의 정렬 (내림차순)
Arrays.sort(arr, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1; // 내림차순 정렬
}
});
System.out.println(Arrays.toString(arr)); // 출력: [9, 5, 3, 2, 1]
}
}
Comparator를 `람다식`으로 정의하여 Arrays.sort() 메서드에 전달하면 코드가 더 간결해진다.
(a, b) -> b - a: 두 값을 비교하는 람다식
b - a는 내림차순
Arrays.sort(arr, (a, b) -> b - a);
a - b는 오름차순
Arrays.sort(arr, (a, b) -> a - b);
import java.util.Arrays;
class Person {
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return name + " (" + age + ")";
}
}
public class Main {
public static void main(String[] args) {
Person[] people = {
new Person("Alice", 30),
new Person("Bob", 25),
new Person("Charlie", 35)
};
// 나이 기준 오름차순 정렬
Arrays.sort(people, (p1, p2) -> p1.age - p2.age);
System.out.println(Arrays.toString(people));
// 출력: [Bob (25), Alice (30), Charlie (35)]
}
}
`람다식` 사용 - 내림차순 정렬
import java.util.Arrays;
import java.util.Collections;
public class Main {
public static void main(String[] args) {
Integer[] arr = {5, 2, 9, 1, 3};
// 내림차순 정렬 (람다식 사용)
Arrays.sort(arr, (o1, o2) -> o2 - o1);
// 또는 Collections.reverseOrder() 사용
// Arrays.sort(arr, Collections.reverseOrder());
System.out.println(Arrays.toString(arr)); // 출력: [9, 5, 3, 2, 1]
}
}
public static void main(String[] args) {
// 람다식을 사용한 정렬
Arrays.sort(nodes, (o1, o2) -> Integer.compare(o1.cost, o2.cost));
// Comparator 인터페이스를 구현한 정렬
Arrays.sort(nodes, new Comparator<Node>() {
@Override
public int compare(Node o1, Node o2) {
return Integer.compare(o1.cost, o2.cost);
}
});
}
'Java' 카테고리의 다른 글
[Java] 자원을 자동으로 해제하는 try-with-resources 구문 (57) | 2024.12.26 |
---|---|
[이클립스] Eclipse 깃허브 커밋 푸쉬 로그인 안됨 해결법 (can't connect to any~) (65) | 2024.12.14 |
[Java] 자바의 자료형 Map 과 Set 의 차이 (9) | 2024.11.07 |
[Java] JDBC 오라클이랑 자바 연동 (31) | 2024.11.04 |
[Java] ArrayList, 제네릭스(Generics), 정렬, Join, String.join 정리 (8) | 2024.11.03 |

일반적으로 배열 정렬할때 쓰는 메서드 Arrays.sort()
기본값으로 오름차순으로 정렬된다.
하지만 내림차순으로 정렬하고 싶을 때 Arrays.sort()
에 Comparator
객체를 인자로 받아서 맞춤형 정렬을 수행할 수 있다.
기본 Arrays.sort()
사용
import java.util.Arrays; public class Main { public static void main(String[] args) { Integer[] arr = {5, 2, 9, 1, 3}; // 기본 정렬 (오름차순) Arrays.sort(arr); System.out.println(Arrays.toString(arr)); // 출력: [1, 2, 3, 5, 9] } }
배열 사용자 정렬 : Comparator
사용
import java.util.Arrays; import java.util.Comparator; public class Main { public static void main(String[] args) { Integer[] arr = {5, 2, 9, 1, 3}; // 사용자 정의 정렬 (내림차순) Arrays.sort(arr, new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return o2 - o1; // 내림차순 정렬 } }); System.out.println(Arrays.toString(arr)); // 출력: [9, 5, 3, 2, 1] } }
Comparator를 람다식
으로 정의하여 Arrays.sort() 메서드에 전달하면 코드가 더 간결해진다.
(a, b) -> b - a: 두 값을 비교하는 람다식
b - a는 내림차순
Arrays.sort(arr, (a, b) -> b - a);
a - b는 오름차순
Arrays.sort(arr, (a, b) -> a - b);
import java.util.Arrays; class Person { String name; int age; Person(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return name + " (" + age + ")"; } } public class Main { public static void main(String[] args) { Person[] people = { new Person("Alice", 30), new Person("Bob", 25), new Person("Charlie", 35) }; // 나이 기준 오름차순 정렬 Arrays.sort(people, (p1, p2) -> p1.age - p2.age); System.out.println(Arrays.toString(people)); // 출력: [Bob (25), Alice (30), Charlie (35)] } }
람다식
사용 - 내림차순 정렬
import java.util.Arrays; import java.util.Collections; public class Main { public static void main(String[] args) { Integer[] arr = {5, 2, 9, 1, 3}; // 내림차순 정렬 (람다식 사용) Arrays.sort(arr, (o1, o2) -> o2 - o1); // 또는 Collections.reverseOrder() 사용 // Arrays.sort(arr, Collections.reverseOrder()); System.out.println(Arrays.toString(arr)); // 출력: [9, 5, 3, 2, 1] } }
public static void main(String[] args) { // 람다식을 사용한 정렬 Arrays.sort(nodes, (o1, o2) -> Integer.compare(o1.cost, o2.cost)); // Comparator 인터페이스를 구현한 정렬 Arrays.sort(nodes, new Comparator<Node>() { @Override public int compare(Node o1, Node o2) { return Integer.compare(o1.cost, o2.cost); } }); }
'Java' 카테고리의 다른 글
[Java] 자원을 자동으로 해제하는 try-with-resources 구문 (57) | 2024.12.26 |
---|---|
[이클립스] Eclipse 깃허브 커밋 푸쉬 로그인 안됨 해결법 (can't connect to any~) (65) | 2024.12.14 |
[Java] 자바의 자료형 Map 과 Set 의 차이 (9) | 2024.11.07 |
[Java] JDBC 오라클이랑 자바 연동 (31) | 2024.11.04 |
[Java] ArrayList, 제네릭스(Generics), 정렬, Join, String.join 정리 (8) | 2024.11.03 |