Dartではリストのソートが簡単にできます、この記事では、Dartでリストをソートする基本的な方法から、より複雑なソート方法までを詳しく解説します。
リストのソート
DartのList
クラスにはsort()
メソッドが用意されており、これを使ってリストの要素を簡単にソートできます。まずは、基本的なリストのソート手順について見ていきましょう。
基本的なリストのソート手順
リストをアルファベット順や数値の昇順でソートするには、以下のようにsort()
メソッドを使用します。
List<int> numbers = [5, 3, 2, 9, 1];
numbers.sort();
print(numbers); // 出力: [1, 2, 3, 5, 9]
文字列リストをソートする場合も同様です。
List<String> words = ['banana', 'apple', 'orange'];
words.sort();
print(words); // 出力: ['apple', 'banana', 'orange']
このsort()
メソッドはデフォルトで要素を昇順にソートします。
降順でソートする方法
リストを降順にソートする場合、sort()
メソッド内で比較関数をカスタマイズする必要があります。
List<int> numbers = [5, 3, 2, 9, 1];
numbers.sort((a, b) => b.compareTo(a));
print(numbers); // 出力: [9, 5, 3, 2, 1]
この例では、sort()
メソッドに渡された比較関数b.compareTo(a)
により、要素が降順にソートされています。
オブジェクトの特定のプロパティでソートする方法
オブジェクトのリストを特定のプロパティでソートする場合、sort()
メソッド内でカスタム比較関数を定義する必要があります。ここでは、Person
クラスのインスタンスのリストをage
プロパティでソートする方法を示します。
void main() {
List<Person> people = [
Person('Alice', 24),
Person('Bob', 30),
Person('Charlie', 28),
];
// ageでソート
people.sort((a, b) => a.age.compareTo(b.age));
print(people); // 出力: [Alice, age 24, Charlie, age 28, Bob, age 30]
}
複数条件でソートする方法
複数の条件でリストをソートする場合、カスタム比較ロジックをsort()
メソッドに提供することで実現できます。例えば、オブジェクトのリストを年齢でソートし、年齢が同じ場合は名前でソートする場合は以下のようにします。
class Person {
String name;
int age;
Person(this.name, this.age);
String toString() => '$name: $age';
}
void main() {
List<Person> people = [
Person('John', 28),
Person('Jane', 31),
Person('John', 31),
Person('Mary', 24)
];
people.sort((a, b) {
int ageDiff = a.age.compareTo(b.age);
if (ageDiff == 0) {
return a.name.compareTo(b.name);
}
return ageDiff;
});
print(people); // 出力: [Mary: 24, John: 28, Jane: 31, John: 31]
}
このコードでは、まずage
で比較し、age
が同じ場合にはname
で比較しています。これにより、複数の条件を持つソートが可能になります。
まとめ
Dartでのリストソートは、単純な数値や文字列のリストから、複雑なオブジェクトのリストまで幅広く対応しています。sort()
メソッドを適切に利用することで、データの整理や検索効率を大幅に向上させることが可能です。
0 件のコメント:
コメントを投稿