4-1.Dartのコレクション: リスト、セット、マップの使用

1. コレクションとは

コレクションは、複数の値を管理・操作するためのデータ構造です。Dartには、リスト、セット、マップといった主要なコレクションが用意されています。これらを使用することで、データの管理や操作が容易になります。

2. リスト

リストは、順序付きのコレクションであり、同じデータ型の要素を保持します。リストは、インデックスを使用して要素にアクセスできます。Dartでは、リストはListクラスを使用して表されます。

リストの作成

Dart
void main() {
  List<int> numbers = [1, 2, 3, 4, 5];
  List<String> names = ['Alice', 'Bob', 'Charlie'];
  
  print(numbers); // [1, 2, 3, 4, 5]
  print(names); // [Alice, Bob, Charlie]
}

リストの操作

リストに要素を追加、削除、アクセスする方法を学びましょう。

Dart
void main() {
  List<int> numbers = [1, 2, 3];

  // 要素の追加
  numbers.add(4);
  print(numbers); // [1, 2, 3, 4]

  // 要素の削除
  numbers.remove(2);
  print(numbers); // [1, 3, 4]

  // インデックスでアクセス
  int firstNumber = numbers[0];
  print(firstNumber); // 1

  // 長さの取得
  int length = numbers.length;
  print(length); // 3
}

リストのイテレーション

Dart
void main() {
  List<String> fruits = ['Apple', 'Banana', 'Cherry'];

  // forループを使ってイテレーション
  for (int i = 0; i < fruits.length; i++) {
    print(fruits[i]);
  }

  // for-inループを使ってイテレーション
  for (String fruit in fruits) {
    print(fruit);
  }
}

3. セット

セットは、順序付けされていない一意の要素のコレクションです。重複する要素を持つことはできません。Dartでは、セットはSetクラスを使用して表されます。

セットの作成

Dart
void main() {
  Set<int> numbers = {1, 2, 3, 4, 5};
  Set<String> names = {'Alice', 'Bob', 'Charlie'};
  
  print(numbers); // {1, 2, 3, 4, 5}
  print(names); // {Alice, Bob, Charlie}
}

セットの操作

セットに要素を追加、削除、アクセスする方法を学びましょう。

Dart
void main() {
  Set<int> numbers = {1, 2, 3};

  // 要素の追加
  numbers.add(4);
  print(numbers); // {1, 2, 3, 4}

  // 要素の削除
  numbers.remove(2);
  print(numbers); // {1, 3, 4}

  // 要素の存在確認
  bool containsThree = numbers.contains(3);
  print(containsThree); // true

  // 長さの取得
  int length = numbers.length;
  print(length); // 3
}

セットのイテレーション

Dart
void main() {
  Set<String> fruits = {'Apple', 'Banana', 'Cherry'};

  // for-inループを使ってイテレーション
  for (String fruit in fruits) {
    print(fruit);
  }
}

4. マップ

マップは、キーと値のペアを保持するコレクションです。キーは一意でなければならず、それぞれのキーに対して値が関連付けられます。Dartでは、マップはMapクラスを使用して表されます。

マップの作成

Dart
void main() {
  Map<String, int> ages = {'Alice': 25, 'Bob': 30, 'Charlie': 35};
  
  print(ages); // {Alice: 25, Bob: 30, Charlie: 35}
}

マップの操作

マップに要素を追加、削除、アクセスする方法を学びましょう。

Dart
void main() {
  Map<String, int> ages = {'Alice': 25, 'Bob': 30};

  // 要素の追加
  ages['Charlie'] = 35;
  print(ages); // {Alice: 25, Bob: 30, Charlie: 35}

  // 要素の削除
  ages.remove('Bob');
  print(ages); // {Alice: 25, Charlie: 35}

  // キーでアクセス
  int aliceAge = ages['Alice'];
  print(aliceAge); // 25

  // キーの存在確認
  bool hasBob = ages.containsKey('Bob');
  print(hasBob); // false

  // 長さの取得
  int length = ages.length;
  print(length); // 2
}

マップのイテレーション

Dart
void main() {
  Map<String, int> ages = {'Alice': 25, 'Bob': 30, 'Charlie': 35};

  // forEachメソッドを使ってイテレーション
  ages.forEach((key, value) {
    print('Name: $key, Age: $value');
  });

  // for-inループを使ってイテレーション
  for (String key in ages.keys) {
    print('Name: $key, Age: ${ages[key]}');
  }
}

5. 例題

例題1: リストの使用

Dart
void main() {
  List<String> colors = ['Red', 'Green', 'Blue'];

  colors.add('Yellow');
  colors.remove('Green');

  for (String color in colors) {
    print(color);
  }

  print('The first color is ${colors[0]}');
  print('The list has ${colors.length} colors');
}

例題2: セットの使用

Dart
void main() {
  Set<int> numbers = {1, 2, 3, 4, 5};

  numbers.add(6);
  numbers.remove(3);

  for (int number in numbers) {
    print(number);
  }

  print('The set contains 4: ${numbers.contains(4)}');
  print('The set has ${numbers.length} numbers');
}

例題3: マップの使用

Dart
void main() {
  Map<String, double> productPrices = {
    'Apple': 1.2,
    'Banana': 0.5,
    'Orange': 0.8,
  };

  productPrices['Grapes'] = 2.0;
  productPrices.remove('Banana');

  productPrices.forEach((product, price) {
    print('Product: $product, Price: $price');
  });

  print('The price of Apple is ${productPrices['Apple']}');
  print('The map has ${productPrices.length} products');
}

↓次回内容:

4-2.Dartのジェネリクスの基本

1. ジェネリクスとは
ジェネリクスは、クラスや関数を特定のデータ型に依存しないように設計するための仕組みです。ジェネリクスを使用することで、コードの再利用性が向上し、型安全性が確保されます。Dartでは、ジェネリクスを使ってリスト、マップ、セットなどのコレクションやカスタムクラスを定義できます。
2. ジェネリクスの基本構文
ジェネリクスは、クラスや関数の定義時に角括弧(<>)を使用して宣言します。https://flutter.saloon.jp/dart-12/

コメントを残す