#flutter #dart #set
#flutter #dart #установить
Вопрос:
Я знаю, что есть List<string>
, но мне нужно использовать Set<string>
. Есть ли способ отсортировать его по алфавиту?
Set reasons = {
'Peter',
'John',
'James',
'Luke',
}
Комментарии:
1. Тип набора не указан. В документах упоминается, что набор неупорядочен . Так в чем смысл его сортировки? Я не понимаю.
Ответ №1:
Используйте SplayTreeSet
вместо:
import 'dart:collection';
...
final sortedSet = SplayTreeSet.from(
{'Peter', 'John', 'James', 'Luke'},
// Comparison function not necessary here, but shown for demonstrative purposes
(a, b) => a.compareTo(b),
);
print(sortedSet);
// Prints: {James, John, Luke, Peter}
Как указывает Джеймсдлин, функция сравнения не требуется, если тип реализует Comparable
.
Комментарии:
1. Обратите внимание, что, хотя в приведенном здесь примере явно передается обратный вызов сравнения (который, как я предполагаю, предназначен для демонстрационных целей), обратный вызов не требуется, если элементы уже
Comparable
есть (которыеString
есть).
Ответ №2:
Вы можете преобразовать набор в список и вызвать метод сортировки. Затем вы можете снова преобразовать этот список в set . Вы также можете создать удобный метод расширения в Set, который делает то же самое.
Set reasons = {
'Peter',
'John',
'James',
'Luke',
};
final reasonsList = reasons.toList();
reasonsList.sort();
print(reasonsList.toSet());