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