반응형
📚 Java 컬렉션 정렬 방법
Java에서 다양한 컬렉션 타입별로 기본 정렬과 사용자 지정 정렬(커스텀 정렬)을 수행하는 방법을 살펴보겠습니다. 각 데이터 구조의 특성을 이해하고 적절한 정렬 방식을 선택하는 것이 중요합니다.
🗂️ 배열
기본 정렬
Arrays.sort()
메소드를 사용하여 배열의 요소를 자연 순서대로 정렬합니다.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] numbers = {5, 3, 8, 1};
Arrays.sort(numbers);
System.out.println(Arrays.toString(numbers)); // 출력: [1, 3, 5, 8]
}
}
커스텀 정렬
특정 조건에 맞춰 배열을 정렬하려면 Comparator
인터페이스를 구현합니다. 예를 들어, Person
객체 배열을 나이 순으로 정렬하는 경우:
import java.util.Arrays;
import java.util.Comparator;
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("John", 25), new Person("Anna", 20), new Person("Mike", 27)};
Arrays.sort(people, new Comparator<Person>() {
public int compare(Person p1, Person p2) {
return Integer.compare(p1.age, p2.age);
}
});
System.out.println(Arrays.toString(people)); // 출력: [Anna: 20, John: 25, Mike: 27]
}
}
📌 리스트
기본 정렬
Collections.sort()
메소드를 사용해 리스트를 자연 순서로 정렬합니다.
import java.util.Arrays;
import java.util.List;
import java.util.Collections;
public class Main {
public static void main(String[] args) {
List<String> words = Arrays.asList("banana", "apple", "cherry");
Collections.sort(words);
System.out.println(words); // 출력: [apple, banana, cherry]
}
}
커스텀 정렬
리스트의 요소를 특정 기준에 따라 정렬하려면 Comparator
인터페이스를 사용합니다. 예를 들어, Person
객체를 이름의 알파벳 순으로 정렬:
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
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) {
List<Person> people = Arrays.asList(new Person("John", 25), new Person("Anna", 20), new Person("Mike", 27));
Collections.sort(people, Comparator.comparing(Person::getName));
System.out.println(people); // 출력: [Anna: 20, John: 25, Mike: 27]
}
}
🌐 맵
키에 따른 정렬
TreeMap
을 사용하면 키를 자연 순서대로 자동으로 정렬합니다. 이는 기본 정렬 방식입니다.
import java.util.Map;
import java.util.TreeMap;
public class Main {
public static to main(String[] args) {
Map<String, Integer> map = new TreeMap<>();
map.put("John", 25);
map.put("Anna", 20);
map.put("Mike", 27);
System.out.println(map); // 출력: {Anna=20, John=25, Mike=27}
}
}
값에 따른 커스텀 정렬
맵의 값을 기준으로 정렬하고 싶다면, 맵을 리스트로 변환한 다음 Comparator
를 사용해 정렬해야 합니다.
import java.util.*;
public class Main {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("John", 25);
map.put("Anna", 20);
map.put("Mike", 27);
List<Map.Entry<String, Integer>> entries = new ArrayList<>(map.entrySet());
entries.sort(Map.Entry.comparingByValue());
System.out.println(entries); // 출력: [Anna=20, John=25, Mike=27]
}
}
반응형
'Java' 카테고리의 다른 글
[JAVA] String Boot에서 AOP를 활용한 로그인 시스템 구현방법 (0) | 2024.05.16 |
---|---|
[JAVA]Java에서의 Deque 소개 (0) | 2024.04.30 |
[JAVA]빌드(Build), 컴파일(Compile), 및 실행(Run) 이해하기 (0) | 2024.03.03 |
[JAVA] serialVersionUID 사용 이유와 예시 (0) | 2024.02.28 |
[JAVA] POI사용 MVC ExcelUpload 방법 (0) | 2023.04.21 |