つのフィールドで
9569 ワード
このチュートリアルでは、Dart/Flutterの2つのフィールドでリストをソートする方法と機能を紹介します
複数のフィールド、またはこのチュートリアルの2つのフィールドを並べ替えます.2つの方法を示します. カスタム比較機能を使用する. 延長 ポスト:Dart/Flutter Sort List of objects
我々は、より複雑なカスタムの比較機能をリストに
まず、フィールドのオブジェクトのリストを並べ替えます
番目のアプローチは拡張することです
Dart/Flutter List Tutorial with Examples Dart/Flutter Constructors tutorial with examples Dart/Flutter String Methods & Operators tutorial with examples Dart/Flutter Future Tutorial with Examples Dart/Flutter Map Tutorial with Examples Dart/Flutter – Convert Object to JSON string Dart/Flutter – Convert/Parse JSON string, array into Object, List Dart/Flutter – Convert List to Map & Map to List
複数のフィールド、またはこのチュートリアルの2つのフィールドを並べ替えます.2つの方法を示します.
Comparable
抽象クラスとオーバーライドcompareTo()
方法つのフィールドのカスタム比較機能を使用して
我々は、より複雑なカスタムの比較機能をリストに
sort()
メソッド.まず、フィールドのオブジェクトのリストを並べ替えます
name
, フィールドage
.class Customer {
String name;
int age;
Customer(this.name, this.age);
@override
String toString() {
return '{ ${this.name}, ${this.age} }';
}
}
main() {
List<Customer> customers = [];
customers.add(Customer('Jack', 23));
customers.add(Customer('Adam', 27));
customers.add(Customer('Katherin', 25));
customers.sort((a, b) {
int nameComp = a.name.compareTo(b.name);
if (nameComp == 0) {
return -a.age.compareTo(b.age); // '-' for descending
}
return nameComp;
});
print('Sort by Name(ASC), then Age(DESC):\n' + customers.toString());
}
出力:Sort by Name(ASC), then Age(DESC):
[{ Adam, 27 }, { Jack, 32 }, { Jack, 23 }, { Katherin, 25 }]
比較可能な抽象クラスを使用した2つのフィールドによるDARTソートリスト
番目のアプローチは拡張することです
Comparable
抽象クラスとオーバーライドcompareTo()
メソッド.今、我々はパスする必要はありませんcompare
機能、我々だけの呼び出しlist.sort()
の代わりにlist.sort(compare)
.class Customer extends Comparable {
String name;
int age;
Customer(this.name, this.age);
@override
String toString() {
return '{ ${this.name}, ${this.age} }';
}
// sort by Name (asc)
@override
int compareTo(other) {
return this.name.compareTo(other.name);
}
}
main() {
List<Customer> customers = [];
customers.add(Customer('Jack', 23));
customers.add(Customer('Adam', 27));
customers.add(Customer('Katherin', 25));
customers.add(Customer('Jack', 32));
customers.sort();
print('Sort by Name(ASC), then Age(DESC):\n' + customers.toString());
}
出力:Sort by Name(ASC), then Age(DESC):
[{ Adam, 27 }, { Jack, 32 }, { Jack, 23 }, { Katherin, 25 }]
更なる読書
Reference
この問題について(つのフィールドで), 我々は、より多くの情報をここで見つけました https://dev.to/tienbku/dart-sort-list-by-two-fields-21aeテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol