Menu
Coddy logo textTech

リストのソート

CoddyのDartジャーニー「論理とフロー」セクションの一部 — レッスン 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()メソッドは、文字列や数値などの一般的なデータ型に対して自動的に機能します。文字列の場合はアルファベット順にソートされ、数値の場合は小さい順(昇順)にソートされます。これにより、要素を予測可能な順序に並べる必要がある場合に、データを整理するための簡単なツールとなります。

challenge icon

チャレンジ

簡単

料理をさまざまなカテゴリーに整理してレストランのメニューシステムを管理するプログラムを作成してください。プログラムは以下の手順を行う必要があります:

  1. レストラン名を表す文字列入力を読み込む
  2. 料理名を表す複数の文字列入力を読み込む(空の文字列を受け取ると入力は終了します)
  3. sort() メソッドを使用して、料理をアルファベット順に並べ替える
  4. 整理されたメニューを、以下に示す正確な形式で出力する

例えば、レストラン名が "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" 1つだけ提供された場合、プログラムは次のように出力する必要があります:

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");
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

論理とフローのすべてのレッスン