[Flutter / Dart]Listクラスに関する主要な機能とメソッドの一覧

DartのListは、多数の機能が提供されています。以下は、DartのListクラスに関する一部の主要な機能とメソッドの一覧です。

作成と初期化

空のリストを作成します。
List()

List<String> emptyList = List();
print(emptyList); // 出力: []

与えられた長さで、指定された値で埋められたリストを作成します。
List.filled(length, fill)

List<int> filledList = List.filled(5, 3); // 長さ5で、全ての要素が3のリスト
print(filledList); // 出力: [3, 3, 3, 3, 3]

生成関数を使ってリストを作成します。
List.generate(length, generator)

List<int> generatedList = List.generate(5, (index) => index * 2);
// 長さ5で、各要素はインデックスの2倍のリスト
print(generatedList); // 出力: [0, 2, 4, 6, 8]

要素の追加・削除

リストの最後に要素を追加します。
add(value)

List<int> numbers = [1, 2, 3];
numbers.add(4);

複数の要素をリストに追加します。
addAll(Iterable)

List<int> numbers = [1, 2, 3];
numbers.addAll([4, 5, 6]);
print(numbers); // 出力: [1, 2, 3, 4, 5, 6]

指定したインデックスに要素を挿入します。
insert(index, value)

List<int> numbers = [1, 3, 4];
numbers.insert(1, 2); // インデックス1に2を挿入
print(numbers); // 出力: [1, 2, 3, 4]

指定したインデックスに複数の要素を挿入します。
insertAll(index, Iterable)

List<int> numbers = [1, 5];
numbers.insertAll(1, [2, 3, 4]); // インデックス1に[2, 3, 4]を挿入
print(numbers); // 出力: [1, 2, 3, 4, 5]

与えられた値をリストから削除します。
remove(value)

List<int> numbers = [1, 2, 3, 4];
numbers.remove(2); // 値2を削除
print(numbers); // 出力: [1, 3, 4]

指定したインデックスの要素を削除します。
removeAt(index)

List<int> numbers = [1, 2, 3, 4];
numbers.removeAt(1); // インデックス1の要素を削除
print(numbers); // 出力: [1, 3, 4]

リストの最後の要素を削除します。
removeLast()

List<int> numbers = [1, 2, 3, 4];
numbers.removeLast(); // 最後の要素を削除
print(numbers); // 出力: [1, 2, 3]

条件に一致するすべての要素を削除します。
removeWhere(test)

List<int> numbers = [1, 2, 3, 4, 5, 6];
numbers.removeWhere((number) => number % 2 == 0); // 偶数をすべて削除
print(numbers); // 出力: [1, 3, 5]

条件に一致しない要素を削除します。
retainWhere(test)

List<int> numbers = [1, 2, 3, 4, 5, 6];
numbers.retainWhere((number) => number % 2 == 0); // 奇数をすべて削除
print(numbers); // 出力: [2, 4, 6]

リストのすべての要素を削除します。
clear()

List<int> numbers = [1, 2, 3, 4, 5];
numbers.clear(); // すべての要素を削除
print(numbers); // 出力: []

要素の取得

リストの最初の要素を取得します。
first

List<int> numbers = [1, 2, 3, 4];
print(numbers.first); // 出力: 1

リストの最後の要素を取得します。
last

List<int> numbers = [1, 2, 3, 4];
print(numbers.last); // 出力: 4

リストが空かどうかを判断します。
isEmpty

List<int> emptyList = [];
print(emptyList.isEmpty); // 出力: true

リストに要素が含まれているかどうかを判断します。
isNotEmpty

List<int> numbers = [1, 2, 3, 4];
print(numbers.isNotEmpty); // 出力: true

与えられた値のインデックスを取得します。
indexOf(value)

List<int> numbers = [1, 2, 3, 4];
print(numbers.indexOf(3)); // 出力: 2

与えられた値がリストに含まれているかどうかを判断します。
contains(value)

List<int> numbers = [1, 2, 3, 4];
print(numbers.contains(3)); // 出力: true
print(numbers.contains(5)); // 出力: false

リストの変換

各要素を関数で変換した結果のIterableを取得します。
map(function)

List<int> numbers = [1, 2, 3, 4];
var squaredNumbers = numbers.map((number) => number * number);
print(squaredNumbers.toList()); // 出力: [1, 4, 9, 16]

IterableをListに変換します。
toList()

Iterable<int> numbers = [1, 2, 3, 4].map((number) => number * 2);
List<int> doubledNumbers = numbers.toList();
print(doubledNumbers); // 出力: [2, 4, 6, 8]

リストをSetに変換します。
toSet()

List<int> numbers = [1, 2, 2, 3, 4, 4];
Set<int> uniqueNumbers = numbers.toSet();
print(uniqueNumbers); // 出力: {1, 2, 3, 4}

リストの操作

リストを並べ替えます。
sort([compare])

List<int> numbers = [4, 1, 3, 2];
numbers.sort();
print(numbers); // 出力: [1, 2, 3, 4]

リストの要素をシャッフルします。
shuffle([random])

List<int> numbers = [1, 2, 3, 4];
numbers.shuffle();
print(numbers); // 出力: 例 [3, 1, 4, 2] (ランダムな順序)

リストの要素の順序を逆にします。
reverse()

List<int> numbers = [1, 2, 3, 4];
print(numbers.reversed.toList()); // 出力: [4, 3, 2, 1]

リストの各要素に関数を適用します。
forEach(function)

List<int> numbers = [1, 2, 3, 4];
numbers.forEach((number) {
print(number * 2); // 出力: 2, 4, 6, 8 (各行)

集約関数

リスト内のすべての数値の合計を計算します。
reduce(function)

List<int> numbers = [1, 2, 3, 4];
int sum = numbers.reduce((currentSum, number) => currentSum + number);
print(sum); // 出力: 10

リスト内のすべての数値の積(乗算の結果)を計算します
fold(initialValue, function)

List<int> numbers = [1, 2, 3, 4];
int product = numbers.fold(1, (currentProduct, number) => currentProduct * number);
print(product); // 出力: 24

検索関数

すべての要素がテストを満たすかどうかを判断します。
every(test)

List<int> numbers = [2, 4, 6, 8];
bool allEven = numbers.every((number) => number % 2 == 0);
print(allEven); // 出力: true

いずれかの要素がテストを満たすかどうかを判断します。
any(test)

List<int> numbers = [1, 3, 5, 7, 8];
bool hasEven = numbers.any((number) => number % 2 == 0);
print(hasEven); // 出力: true

テストを満たす要素のイテラブルを取得します。
where(test)

List<int> numbers = [1, 2, 3, 4, 5, 6];
Iterable<int> evenNumbers = numbers.where((number) => number % 2 == 0);
print(evenNumbers.toList()); // 出力: [2, 4, 6]

テストを満たす最初の要素を取得します。
firstWhere(test)

List<int> numbers = [1, 3, 5, 7, 8];
int firstEven = numbers.firstWhere((number) => number % 2 == 0, orElse: () => -1);
print(firstEven); // 出力: 8

テストを満たす最後の要素を取得します。
lastWhere(test)

List<int> numbers = [2, 4, 5, 7];
int lastOdd = numbers.lastWhere((number) => number % 2 != 0, orElse: () => -1);
print(lastOdd); // 出力: 7

テストを満たす唯一の要素を取得します(複数ある場合はエラー)。
singleWhere(test)

List<int> numbers = [1, 3, 5, 7];
try {
int singleOdd = numbers.singleWhere((number) => number == 5);
print(singleOdd); // 出力: 5
} catch (e) {
print(e); // エラーが発生した場合の処理

その他のメソッド

指定された範囲の部分リストを取得します。
sublist(start, [end])

List<int> numbers = [1, 2, 3, 4, 5];
List<int> subNumbers = numbers.sublist(1, 4);
print(subNumbers); // 出力: [2, 3, 4]

リストの最初のn要素を取得します。
take(count)

List<int> numbers = [1, 2, 3, 4, 5];
Iterable<int> firstThree = numbers.take(3);
print(firstThree.toList()); // 出力: [1, 2, 3]

リストの最初のn要素をスキップします。
skip(count)

List<int> numbers = [1, 2, 3, 4, 5];
Iterable<int> afterThree = numbers.skip(3);
print(afterThree.toList()); // 出力: [4, 5]

リストの要素を結合して文字列を作成します。
join([separator])

List<String> words = ["Hello", "World"];
String sentence = words.join(" ");
print(sentence); // 出力: "Hello World"