다트 정렬 개체 목록 내림차순

이 자습서에서는 Dart/Flutter에서 내림차순으로 개체 목록을 정렬하는 몇 가지 방법과 기능을 보여줍니다.

오름차순과 유사하지만 세 가지 방법으로 이를 수행할 수 있습니다.
  • 사용자 지정 비교 기능을 사용합니다.
  • 확장Comparable 추상 클래스, 재정의compareTo() 메서드 및 사용reversed .
  • Comparable 추상 클래스 확장, compareTo() 메서드 재정의 및 fast_immutable_collections 라이브러리 사용.

  • 전체 게시물: Dart/Flutter Sort List of objects

    Dart/Flutter 정렬 객체 목록 사용자 정의 비교 기능을 사용하여 내림차순



    항목의 위치를 ​​바꾸는 사용자 정의 비교 함수를 목록의sort() 메서드에 전달합니다.

    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) => b.age.compareTo(a.age));
      print('Sort by Age: ' + customers.toString());
    
      customers.sort((a, b) => b.name.compareTo(a.name));
      print('Sort by Name: ' + customers.toString());
    }
    


    산출:
    Sort by Age: [{ Adam, 27 }, { Katherin, 25 }, { Jack, 23 }]
    Sort by Name: [{ Katherin, 25 }, { Jack, 23 }, { Adam, 27 }]
    

    Dart/Flutter Sort 객체 목록 Comparable 추상 클래스를 사용하여 내림차순



    reversed 속성을 사용하여 개체 목록을 내림차순으로 정렬할 수 있습니다. 목록에 있는 객체의 Iterable를 반환합니다.

    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.reversed.toList();
      print(customers);
    }
    


    산출:
    [{ Katherin, 25 }, { Jack, 23 }, { Adam, 27 }]
    

    먼저 Comparable 추상 클래스를 확장하고 compareTo() 메서드를 재정의한 다음 list.reversed.toList() 를 호출합니다.
    .reversed는 목록을 뒤집지 않습니다. 대신 원래 목록을 오름차순으로 정렬한 다음 내림차순을 반환합니다Iterable. 마지막으로 .toList()가 필요합니다.

    그러나 큰 목록은 어떻습니까?
    다른 접근 방식을 살펴보겠습니다.

    Dart/Flutter 정렬 객체 목록 라이브러리를 사용하여 내림차순



    불변 컬렉션을 생성하고 Fast Immutable Collections 라이브러리를 직접 사용할 수 있습니다.
    클래스는 이전 접근 방식(확장Comparable 및 재정의compareTo() 방식)과 동일합니다. 그러나 훨씬 빠른 sortReversed()를 사용합니다.

    import 'package:fast_immutable_collections/fast_immutable_collections.dart';
    
    class Customer extends Comparable {
      ...
      @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.sortReversed();
      print(customers);
    }
    


    산출:
    [{ Katherin, 25 }, { Jack, 23 }, { Adam, 27 }]
    

    추가 자료


  • 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
  • 좋은 웹페이지 즐겨찾기