Сортировка списка
Часть раздела Логика и управление потоком путешествия по Dart на Coddy — урок 7 из 65.
Когда вам нужно упорядочить элементы в списке, Dart предоставляет метод sort(), который располагает элементы в порядке возрастания. Этот метод особенно полезен для расположения имен в алфавитном порядке или чисел от меньшего к большему.
Метод sort() изменяет исходный список напрямую, а не создает новый отсортированный список. Когда вы вызываете sort() для списка, он переупорядочивает существующие элементы на месте.
List<String> names = ['Charlie', 'Alice', 'Bob'];
names.sort();
print(names); // ['Alice', 'Bob', 'Charlie']
List<int> scores = [85, 92, 78, 96];
scores.sort();
print(scores); // [78, 85, 92, 96]Метод sort() работает автоматически для распространенных типов данных, таких как строки и числа. Для строк он выполняет сортировку по алфавиту, а для чисел — от меньшего к большему. Это делает его простым инструментом для организации ваших данных всякий раз, когда вам нужны элементы в предсказуемом порядке.
Задание
ЛегкоСоздайте программу, которая управляет системой меню ресторана, организуя блюда по различным категориям. Ваша программа должна:
- Прочитать строковый ввод, представляющий название ресторана
- Прочитать несколько строковых вводов, представляющих названия блюд (ввод закончится, когда вы получите пустую строку)
- Использовать метод
sort()для упорядочивания блюд в алфавитном порядке - Вывести организованное меню в точном формате, показанном ниже
Например, если название ресторана — "Bella Vista", а блюда — "Pasta Carbonara", "Caesar Salad", "Grilled Salmon", "Apple Pie", ваша программа должна вывести:
Restaurant: Bella Vista
Original menu: [Pasta Carbonara, Caesar Salad, Grilled Salmon, Apple Pie]
Sorted menu: [Apple Pie, Caesar Salad, Grilled Salmon, Pasta Carbonara]
Total dishes: 4
Status: Menu organized alphabeticallyЕсли название ресторана — "Quick Bites", а блюда — "Burger", "Pizza", "Sandwich", ваша программа должна вывести:
Restaurant: Quick Bites
Original menu: [Burger, Pizza, Sandwich]
Sorted menu: [Burger, Pizza, Sandwich]
Total dishes: 3
Status: Menu organized alphabeticallyЕсли название ресторана — "Cafe Corner" и предоставлено только одно блюдо "Coffee", ваша программа должна вывести:
Restaurant: Cafe Corner
Original menu: [Coffee]
Sorted menu: [Coffee]
Total dishes: 1
Status: Menu organized alphabeticallyВаша программа должна использовать метод sort() для алфавитной сортировки блюд. Помните, что sort() изменяет исходный список на месте, поэтому вам нужно будет создать копию исходного списка перед сортировкой, если вы хотите отобразить как оригинальную, так и отсортированную версии.
Шпаргалка
Метод sort() упорядочивает элементы списка по возрастанию и изменяет исходный список напрямую:
List<String> names = ['Charlie', 'Alice', 'Bob'];
names.sort();
print(names); // ['Alice', 'Bob', 'Charlie']
List<int> scores = [85, 92, 78, 96];
scores.sort();
print(scores); // [78, 85, 92, 96]Для строк sort() упорядочивает элементы по алфавиту. Для чисел он сортирует от меньшего к большему. Поскольку sort() изменяет исходный список на месте, сначала создайте копию, если вам нужно сохранить исходный порядок.
Попробуйте сами
import 'dart:io';
void main() {
// Прочитать название ресторана
String? restaurantName = stdin.readLineSync();
// Читать названия блюд до пустой строки
List<String> dishes = [];
String? dish;
while ((dish = stdin.readLineSync()) != null && dish!.isNotEmpty) {
dishes.add(dish);
}
// TODO: Напишите свой код ниже
// Создать копию исходного списка и отсортировать ее
// Рассчитать общее количество блюд
// Вывести результат в требуемом формате
// Вывод результатов
// print("Restaurant: $restaurantName");
// print("Original menu: $dishes");
// print("Sorted menu: $sortedDishes");
// print("Total dishes: $totalDishes");
// print("Status: Menu organized alphabetically");
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Продвинутая работа со списками
Свойства списка: first и lastСостояние списка: isEmpty и isNotEmptyРазворот спискаДобавление в список: insertУдаление из списка: removeWhereПоиск в списке: indexOfСортировка спискаПеремешивание спискаИтоги — Органайзер списков4Продвинутая работа с Map
Итерация по MapПроверка ключей и значенийСвойства Map: keys и valuesУсловное добавление: putIfAbsentУдаление записей из MapВложенные MapИтоги — Обновление инвентаря2Функциональные операции со списками
Преобразование с помощью 'map'Фильтрация с помощью 'where'Использование '.toList()'Проверка условий с помощью 'any'Условия с 'every'Поиск с помощью 'firstWhere'Повторение — фильтрация данных5Проект: Калькулятор корзины
Настройка проектаДобавление товаров в корзину3Множества
Что такое множество?Создание множестваДобавление и удаление элементовПроверка наличия элементов в множествеПреобразование списка в множествоОбъединение множествПересечение множествРазность множествИтоги: уникальный список гостей