Dart에서 리스트를 정렬하는 방법들을 소개합니다.
1. sort()로 리스트 오름차순/내림차순 정렬
sort()
는 리스트를 오름차순으로 정렬합니다.
내림차순으로 정렬하려면, sort()
에 비교 함수를 전달하여 반대로 비교하여 내림차순으로 정렬되도록 만들어야 합니다.
void main() {
List<int> numbers = [5, 2, 9, 1, 5, 6];
print("정렬 전: $numbers");
numbers.sort();
print("오름차순 정렬 후: $numbers");
// 오름차순과 반대 순서로 비교하여 내림차순으로 정렬
numbers.sort((a, b) => b.compareTo(a));
print("내림차순 정렬 후: $numbers");
}
Output:
정렬 전: [5, 2, 9, 1, 5, 6]
오름차순 정렬 후: [1, 2, 5, 5, 6, 9]
내림차순 정렬 후: [9, 6, 5, 5, 2, 1]
2. Comparable을 이용하여 커스텀 객체 정렬
일반적인 커스텀 클래스의 경우 sort()
를 사용하여 정렬하려면 Comparable
를 구현(implements)해야 합니다.
아래와 같이 Person 클래스는 Comparable을 구현하여 compareTo()
함수를 오버라이드했습니다.
Comparable을 구현한 클래스 객체 리스트는 sort()
를 사용하여 정렬할 수 있습니다.
class Person implements Comparable<Person> {
String name;
int age;
Person(this.name, this.age);
// Comparable 인터페이스를 구현하여 정렬 순서를 제공합니다.
int compareTo(Person other) {
// 나이를 기준으로 오름차순으로 정렬합니다.
return age.compareTo(other.age);
}
String toString() {
return '$name ($age years old)';
}
}
void main() {
List<Person> people = [
Person('Alice', 30),
Person('Bob', 25),
Person('Eve', 35),
Person('Charlie', 28),
];
print('정렬 전:');
for (var person in people) {
print(person);
}
// Comparable 인터페이스를 구현했기 때문에 sort() 메서드를 호출하여
// 오름차순으로 정렬할 수 있습니다.
people.sort();
print('오름차순 정렬 후:');
for (var person in people) {
print(person);
}
// 오름차순과 반대 순서로 비교하여 내림차순으로 정렬
people.sort((a, b) => b.age.compareTo(a.age));
print('내림차순 정렬 후:');
for (var person in people) {
print(person);
}
}
Output:
정렬 전:
Alice (30 years old)
Bob (25 years old)
Eve (35 years old)
Charlie (28 years old)
오름차순 정렬 후:
Bob (25 years old)
Charlie (28 years old)
Alice (30 years old)
Eve (35 years old)
내림차순 정렬 후:
Eve (35 years old)
Alice (30 years old)
Charlie (28 years old)
Bob (25 years old)