Dartで入れ子になったリストをフラット(平らなリスト)にする方法

2024年7月23日火曜日

Flutter

t f B! P L

入れ子のリストをフラットにする「expand」メソッド

Dartにおいて、入れ子になったリスト(リストのリスト)を単一の平らなリストに変換する場面はexpandメソッドを使います。expandは、引数に各要素に適用する関数を指定し、結果として得られるリストから、新しい1次元のリストを作成します。
このメソッドは、JavaScriptのflatMapやC#のSelectManyと同様の機能を提供し、リスト内のリストを単一のリストに「平らにする」処理を簡潔に書くことができます。

スポンサーリンク

expandメソッドの使い方

expandメソッドの基本的な使い方を紹介します。
以下は、入れ子になったリストがあり、それをexpandを用いて平らなリストに変換する例です。

void main() {
  List<List<int>> nestedList = [
    [1, 2, 3],
    [4, 5],
    [6, 7, 8, 9]
  ];

  // expandメソッドを使ってリストをフラットにする
  List<int> flatList = nestedList.expand((innerList) => innerList).toList();

  print(flatList);  // 出力: [1, 2, 3, 4, 5, 6, 7, 8, 9]
}

このコードでは、nestedListという入れ子になった整数のリストがあります。expandの引数に渡される関数で、それぞれの内部リスト(innerList)をそのまま返します。
expandの引数に渡される関数は、外側のリストの各要素(この場合は内部リスト)を受け取り、展開する要素のシーケンス(ここでは各内部リストの要素)を返します。結果として、次のイメージのように元のリストの構造をフラットな形に変換することができるわけです。

expandで入れ子のリストをフラットにするイメージ

スポンサーリンク

まとめ

Dartにおいて、expandメソッドはリストのリストを単一のリストに平坦化する非常に有効なメソッドです。

スポンサーリンク
スポンサーリンク

このブログを検索

Profile

自分の写真
Webアプリエンジニア。 日々新しい技術を追い求めてブログでアウトプットしています。
プロフィール画像は、猫村ゆゆこ様に書いてもらいました。

仕事募集もしていたり、していなかったり。

QooQ