Kotlin データ マッピング: 比較と map() flatMap() flatten()

Android と iOS のオペレーティング システムは、使用する最新のプログラミング言語 (それぞれ Kotlin と Swift) によって導入された現代の関数型プログラミング パターンとパラダイムをますます取り入れていますが、それに伴ってコレクションの利用と操作のニーズも飛躍的に増大しています。

Kotlin 標準ライブラリには、コレクションに変換を追加するように設計された一連の拡張関数が含まれています。これらの拡張関数は、優れた高速かつ効率的なコレクション操作に対する高まるニーズを満たすようにも設計されています。

Kotlin 標準ライブラリによって提供されるコレクションから MIUI4.0 システム チュートリアルを Xiaomi にフラッシュするにはどうすればよいですか? Xiaomi が MIUI8.2.4.0 Global Stable Romの変更を開始. マッピング、圧縮、関連付け、フラット化の 4 つの主なタイプがあります。この記事では、そのうちの 2 つ、つまり Map と Flatten だけに焦点を当てます。これは、この一連の拡張関数には特別な関連性があり、整理することを目的とした同様のユースケースのため、永久に一緒に圧縮されるためです。

トラックマップ

まずは地図の基本から始めましょう。変換関数は Kotlin の公式ドキュメント:map() で定義されています。

マッピング変換は、別のコレクションの要素に対する関数の結果からコレクションを作成します。指定されたラムダ関数を後続の各要素に適用し、ラムダ結果のリストを返します。結果の順序は、要素の元の順序と同じです。

これが何を意味するのかをよりよく説明するために、簡単な例から始めましょう。

この例では、次の 3 つの値があります。リカバリ モードとは何を意味しますか? 電話機のリカバリモードに入るにはどうすればよいですか? 次に、数値 1、2、および 3 は、セット内の各要素を乗算する述語を含む関数を使用して処理され、次の結果リストが返されますmap()

[5、10、15]

この機能には対応する機能があり、Bluetooth ヘッドセットをインストールして Apple Watch で音楽を聴くにはどうすればよいですか? AppleWatch Bluetooth ヘッドセット接続チュートリアルでは、要素のインデックスをより便利に利用できます。そうは言っても、これは、目的の変換で要素のインデックスが必要になる場合に使用するのに理想的です。map()``mapIndexed()

以下に、前と同じ基本セットを使用した簡単な例とその結果を示します。

[1、1、1]

Kotlin のヌル セーフティ プランの後、Windows 10 システムはどのようにして BIOS に入るのですか? 2 つの拡張関数には、結果のコレクションが特定の変換によって否定される可能性のあるすべての値を無視できるようにするバージョンも付属しています。

どちらも利便性のために作成されており、場合によっては null 値が依然として発生する可能性があることに注意してください。それらの使用法は次のコード ブロックで示されています。

[6、3、9] 
[6、3、9]

最後に、コレクションでマップ変換を使用すると、2 つの並列オプションが開きます。マップキーに適用される変換はその関数を使用する必要がありますが、マップ値に適用される変換は代わりにdos インターフェイスに入る方法で行う必要がありますか? この機能を使用するには、コンピュータは Windows コマンド ライン (DOS) をどのように使用しますか。マップのmapKeys()mapValues()

公式ドキュメントで説明されているように、両方の関数はマップ エントリを引数として受け取る変換を使用するため、キーと値を同時に操作できます。

{FIRST=1、SECOND=2、THIRD=3、FOURTH=4} 
{最初=6、2番目=8、3番目=8、4番目=10}

土地を平らにする

コレクション変換に関する Kotlin のドキュメントで説明されているように、ネストされたコレクションを操作するには、ネストされたコレクションの要素へのフラット アクセスを提供する標準ライブラリ関数の使用が必要になる場合があります。このようなタイプのソリューションを提供する主な関数は と の 2 つで、どちらもフラット化コレクション変換関数グループの一部とみなされます。flatten()`` flatMap()

まず、コレクションのコレクションを取得し、ネストされたコレクションが持っていたすべての要素を含む単数形を返す関数です。flatten()``リスト

最初の例では、ネストされた のリストを取得し、すべての値を表示する単一の値に平坦化します。 flatten() SetList

[9、8、7、6、5、4、3、2、1、0]

この関数は、あらゆるタイプのオブジェクト タイプを含むネストされたコレクションをフラット化できます。要点をさらに実証するために、次に、 flatten()``String を使用する非常によく似た例を示します。

[ロサンゼルス、サンフランシスコ、サクラメント、サンアントニオ、ヒューストン、ダラス、メキシコシティ、モンテレイ、グアダラハラ]

また、この関数は、ネストされたコレクション内のオブジェクトのタイプによって制限されません。これは、内部コレクションの内部にさまざまなオブジェクト型を含めることができ、関数は各型のすべての結果を含む型結果を構築できる必要があることを意味します。 flatten() ListAny

[1、2、3、1、2、3、1.0、2.0、3.0]

平らな土地の地図

Kotlin が提供するもう 1 つの Flatten コレクション変換関数は です。ドキュメントによると、2 番目の関数は Hybrid と非常によく似た動作をしますが、コレクション要素を別のコレクションにマップする関数を使用することで、ネストされたコレクションを処理する方法を提供するというさらなる柔軟性を提供します。したがって、すべての要素の戻り値の単一のリストが返されます。flatMap() flatten()flatMap()

flatMap()` は後続の呼び出し (マップの結果としてのコレクション) として動作します。
— [kotlinlang.org](https://kotlinlang.org/docs/collection-transformations.html# flatten)`map()`` flatten()

テストに使用した例から始めましょう。ただし、2 つのオプションの違いを強調するために、いくつかのバリエーションを追加します。 flatten()

[9、8、7、6、5、4、3、2、1、0]

上の例では、例の 1 つを再利用しましたが、この関数を使用して同じ結果を達成しています。flatten()`` flatMap()

ここでわかるように、関数はネストされたコレクションを平坦化するだけでなく、内部コレクションで起動される関数 flatMap( ) を介してさらに操作するために、内部コレクション型 (この場合は異なる ) に変換を追加する追加の機会も得ます。Set地図()

[6、7、8、9、4、5、1、2、3、0]

2 番目の例では、同じコードを再度使用しますが、今回は関数ステップの一部として追加の操作を追加して、2 つの Flatten 関数の主な違いをさらに明らかにします。flatMap()``map()

この関数は、最初のレベルの下にネストされた情報を検索したり、さらに変換したりできるため、複雑なデータ クラスまたは POJO を扱う場合に特に役立ちます。flatMap()

次の例では、呼び出しでのより複雑なデータ操作を検討するために、やや複雑な例を使用します。 データ クラス `` flatMap()

[オースティン、サンアントニオ、ダラス、ヒューストン、ロサンゼルス、サンフランシスコ、サクラメント、モンテレー、グアダラハラ、メキシコシティ]

兄弟関数と同様に、この関数もさまざまな型のコレクションを平坦化することができ、最終的に次の型のコレクションとして解釈されます。 flatten() flatMap()Any

[1、2、3、1、2、3]

最後に、この関数は、ネストされたコレクション グループの最も内側のコレクションにさらに変換を追加するために、変換ブロック内に追加の変換を追加することもできます。 flatMap()``map()

[オースティン:テキサス、サンアントニオ:テキサス、ダラス:テキサス、ヒューストン:テキサス、ロサンゼルス:カリフォルニア、サンフランシスコ:カリフォルニア、サクラメント:カリフォルニア、モンテレー:メキシコ、グアダラハラ:メキシコ、メキシコシティ:メキシコ]

最後の例は、この関数の最高の使用法を示しています。後続の呼び出しと組み合わせると、リストの最も一般的で詳細な操作が可能になり、ユーザーにはあらゆる種類のニーズに応じてそのようなリストのフラットな解釈が提供されます。flatMap()flatMap()マップ()

結論は

3 つの Kotlin データ マッピング関数 ( 、 、および ) はすべて、特に Kotlin コレクションを処理する一連の変換関数の一部です。これらは、デフォルト状態では分析が難しい複雑なコレクションやネストされたコレクションの解釈と操作に役立ちます。マップ() flatten()flatMap()

これらの強力な機能のいずれかを適切に利用することで、開発者はあらゆる種類の複雑なコレクション構造から必要な情報をより適切に抽出できるようになります。この手法は、開発者の作業の効率と信頼性を最大化するために重要です。これらを正しく理解することは、一般的なリアクティブ ストリーミング コーディング パラダイムを扱うときに役立ちます。また、RxJava や Kotlin コルーチンなどの一般的な同時実行ライブラリを使用すると、まさにそれを行うことができます。

おすすめ

転載: blog.csdn.net/weixin_47967031/article/details/132575541