리스트의 모든 요소들을 오름차순 또는 내림차순으로 정렬하는 방법을 소개합니다.
1. List.sort() 함수로 정렬
1.1 오름차순 정렬
List.sort()
는 리스트를 오름차순으로 정렬합니다. 원본 리스트의 순서가 변경됩니다.
void main() {
List list = [5, 1, 4, 3, 2];
list.sort();
print(list);
}
Output:
[1, 2, 3, 4, 5]
1.2 내림차순 정렬
만약 내림차순으로 정렬하려면, List.sort(compare)
를 이용하여 정렬 규칙을 변경해야 합니다.
List.sort(compare)
는 리스트의 모든 요소에 대해서 compare 함수를 이용하여 비교합니다.
아래 예제를 보면, a와 b의 비교 순서를 반대로 변경하여 오름차순이 내림차순으로 변경되도록 했습니다.
void main() {
List list = [5, 1, 4, 3, 2];
list.sort((a, b) => b.compareTo(a));
print(list);
}
Output:
[5, 4, 3, 2, 1]
다른 방법으로, 오름차순으로 정렬된 배열을 reversed
로 역순으로 변경하여 내림차순으로 바꾸는 방법이 있습니다.
void main() {
List list = [5, 1, 4, 3, 2];
list.sort();
List newList = List.from(list.reversed);
print(newList);
}
Output:
[5, 4, 3, 2, 1]
2. 원본 리스트 변경 없이 정렬
위의 예제들은 원본 리스트의 순서를 변경하였습니다.
만약 원본 리스트의 순서는 변경하지 않고, 정렬된 새로운 리스트를 만들고 싶을 때는 아래와 같이 리스트를 복사하고, 복사된 리스트를 정렬하면 됩니다.
void main() {
List list = [5, 1, 4, 3, 2];
List newList = List.from(list);
newList.sort();
print(list);
print(newList);
}
Output:
[5, 1, 4, 3, 2]
[1, 2, 3, 4, 5]
3. 문자열의 길이를 기준으로 정렬
기본적으로 sort()
는 객체를 비교합니다.
만약 String 리스트에서 String의 길이를 기준으로 정렬을 하고 싶을 때는 compare
함수를 구현하고 sort()
에 전달해야 합니다.
아래 예제는 String의 length의 크기를 기준으로 리스트를 정렬합니다.
void main() {
List list = ["apple", "banana", "kiwi", "melon"];
list.sort((a, b) => a.length.compareTo(b.length));
print(list);
}
Output:
[kiwi, apple, melon, banana]
4. Custom 클래스 객체의 리스트 정렬
Custom 클래스 객체의 리스트를 정렬하는 방법입니다.
아래 예제는 Custom 클래스, Person
클래스 객체의 리스트를 정렬합니다.
- Person의
age
를 기준으로 오름차순으로 정렬 compare
함수에서 객체의age
값을 비교하여 정렬하도록 구현
class Person {
String name;
int age;
Person(this.name, this.age);
String toString() {
return "{$name: $age}";
}
}
void main() {
List<Person> list = [
new Person("Peter", 30),
new Person("John", 25),
new Person("Patrick", 33),
new Person("Tom", 28),
];
list.sort((a, b) => a.age.compareTo(b.age));
print(list);
}
Output:
[{John: 25}, {Tom: 28}, {Peter: 30}, {Patrick: 33}]
Loading script...
Related Posts
- Flutter/Dart - Future.delayed() 사용 방법
- Flutter/Dart - Stream 사용 방법
- Flutter/Dart - 파일, 디렉토리 삭제
- Flutter/Dart - 텍스트 파일 쓰기
- Flutter/Dart - 반복문 (for, while, for-in, forEach)
- Flutter/Dart - Static 변수, 메소드 선언
- Flutter/Dart - 텍스트 파일 읽기
- Flutter/Dart - 다양한 Null 체크 방법
- Flutter/Dart - Double을 Int로 변환
- Flutter/Dart - Double을 String으로 변환
- Flutter/Dart - String을 Double로 변환
- Flutter/Dart - String을 List로 변환
- Flutter/Dart - String에서 특정 문자열 Index 찾기
- Flutter/Dart - String 길이(length)
- Flutter/Dart - 몇 초 지연시키기, sleep
- Flutter/Dart - 날짜 계산, 년/월/일 더하고 빼기
- Flutter/Dart - 날짜 문자열을 DateTime으로 변환
- Flutter/Dart - 현재 시간 가져오기, DateTime
- Flutter/Dart - Map에 key-value 추가
- Flutter/Dart - Map 순회 방법
- Flutter/Dart - Map 선언 및 초기화
- Flutter/Dart - Map에서 Entry(key-value) 제거
- Flutter/Dart - key, value로 Map 정렬
- Flutter/Dart - 리스트 복사 방법
- Flutter/Dart - 리스트 합치는 방법
- Flutter/Dart - 리스트 최대값, 최소값 찾기
- Flutter/Dart - 리스트 요소 추가, 특정 위치 추가
- Flutter/Dart - 리스트 요소 제거
- Flutter/Dart - 리스트 합계, 평균 계산
- Flutter/Dart - 리스트 요소 값 변경, 찾기
- Flutter/Dart - 리스트 중복 제거
- Flutter/Dart - 리스트 정렬 (오름차순, 내림차순)
- Flutter/Dart - 리스트 자르기, 분리하기
- Flutter/Dart - 변수 타입 체크
- Flutter/Dart - 리스트 필터링