🎯
Dartのリストを昇順・降順に並び替える操作
💡Tips
Dartでリストを昇順・降順に並び替える操作をするときに、compareToというメソッドを使う。リストの操作が苦手なので調べてみた。
基本的な使い方:
compareTo
は2つの値を比較するためのメソッドです。
戻り値は整数で、以下の意味を持ちます:
- 負の数(
-1
):呼び出し元が比較対象より小さい -
0
:両者が等しい - 正の数(
1
):呼び出し元が比較対象より大きい
コード内での使用例:
昇順ソート(デフォルト)
..sort() // 内部的に compareTo() を使用
降順ソート
..sort((a, b) => b.compareTo(a))
実際の動作:
数値の場合:
1.compareTo(2) // -1を返す(1 < 2)
2.compareTo(1) // 1を返す(2 > 1)
2.compareTo(2) // 0を返す(2 = 2)
文字列の場合:
'a'.compareTo('b') // -1を返す(aはbより前)
'b'.compareTo('a') // 1を返す(bはaより後)
'a'.compareTo('a') // 0を返す(同じ文字)
実行結果:
// sort()メソッドには、compareTo()メソッドを使用して、昇順にソートすることができます。
// これは、古い順(昇順)にソートするため、文字列の辞書的順序に基づいてソートされます。
void main() {
// 数値のリストを作成
final List<int> numbers = [1, 2, 3, 4, 4, 5, 6, 7, 8, 9];
// 文字列のリストを作成
final List<String> strings = [
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h',
'i',
'j',
];
print('元の数値リスト: $numbers');
print('元の文字列リスト: $strings');
// 数値リストのソート
final ascNumbers = List<int>.from(numbers)..sort(); // 古い順(昇順)
final descNumbers = List<int>.from(numbers)
..sort((a, b) => b.compareTo(a)); // 新しい順(降順)
print('\n数値リスト - 古い順(昇順): $ascNumbers');
print('数値リスト - 新しい順(降順): $descNumbers');
// 文字列リストのソート
final ascStrings = List<String>.from(strings)..sort(); // 古い順(昇順)
final descStrings = List<String>.from(strings)
..sort((a, b) => b.compareTo(a)); // 新しい順(降順)
print('\n文字列リスト - 古い順(昇順): $ascStrings');
print('文字列リスト - 新しい順(降順): $descStrings');
}
Listをソートするときに使うだろう。普段書いているコードでは使う機会がないので、他にも良い方法があればソートするロジックを考えてみたい。
Discussion