Во Flutter сортировка карты по ее значениям может быть полезной операцией, когда вам нужно организовать данные на основе определенных критериев. В этом сообщении блога будут рассмотрены несколько методов достижения этого во Flutter с использованием Dart. Мы предоставим примеры кода и пояснения для каждого метода, что позволит вам выбрать тот, который лучше всего соответствует вашим потребностям.
Метод 1: преобразование карты в список и сортировка
Один простой подход – преобразовать карту в список пар ключ-значение, отсортировать список на основе значений, а затем преобразовать его обратно в отсортированный список. карта.
Map<String, int> unsortedMap = {'Apple': 3, 'Banana': 2, 'Orange': 1};
List<MapEntry<String, int>> sortedList = unsortedMap.entries.toList()
..sort((a, b) => a.value.compareTo(b.value));
Map<String, int> sortedMap = Map.fromEntries(sortedList);
Метод 2: использование библиотеки package:collection
Библиотека package:collectionпредоставляет полезные утилиты для работы с коллекциями в Dart. Вы можете использовать класс SplayTreeMapиз этой библиотеки для сортировки карты по ее значениям.
import 'package:collection/collection.dart';
Map<String, int> unsortedMap = {'Apple': 3, 'Banana': 2, 'Orange': 1};
SplayTreeMap<String, int> sortedMap = SplayTreeMap.from(
unsortedMap,
(a, b) => unsortedMap[a].compareTo(unsortedMap[b]),
);
Метод 3: использование библиотеки dart:collection
Встроенная библиотека dart:collectionDart предоставляет класс SplayTreeMap, который можно использовать для отсортировать карту по ее значениям.
import 'dart:collection';
Map<String, int> unsortedMap = {'Apple': 3, 'Banana': 2, 'Orange': 1};
SplayTreeMap<String, int> sortedMap = SplayTreeMap<String, int>.from(
unsortedMap,
(a, b) => unsortedMap[a].compareTo(unsortedMap[b]),
);
Метод 4. Использование метода sortedиз библиотеки dart:core.
Библиотека dart:coreкомпании Dart предоставляет Iterableметод расширения sorted, который можно использовать для записей карты для их сортировки по значениям.
Map<String, int> unsortedMap = {'Apple': 3, 'Banana': 2, 'Orange': 1};
Map<String, int> sortedMap = Map.fromEntries(
unsortedMap.entries.toList()..sort((a, b) => a.value.compareTo(b.value)),
);
В этой статье мы рассмотрели несколько методов сортировки карты по значению во Flutter. Эти методы включают преобразование карты в список и сортировку с использованием библиотеки package:collection, использования библиотеки dart:collectionи использования метода sortedиз dart:coreбиблиотека. Каждый метод предлагает свой подход к решению задачи сортировки. Выберите тот, который соответствует вашим требованиям и стилю кодирования в ваших проектах Flutter.