つのフィールドで


このチュートリアルでは、Dart/Flutterの2つのフィールドでリストをソートする方法と機能を紹介します
複数のフィールド、またはこのチュートリアルの2つのフィールドを並べ替えます.2つの方法を示します.
  • カスタム比較機能を使用する.
  • 延長Comparable 抽象クラスとオーバーライドcompareTo() 方法
  • ポスト:Dart/Flutter Sort List of objects

    つのフィールドのカスタム比較機能を使用して


    我々は、より複雑なカスタムの比較機能をリストに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 }]
    

    更なる読書

  • 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