【Kotlin/Android Studio】配列(list)をフィルタリングする方法!filterNot/filterNotNull/filterIndexed

この記事からわかること
- Kotlin/Android Studioで配列(リスト)をフィルタリングする方法
- filterメソッドの使い方
- filterNot/filterNotNull/filterIndexedの使い方
index
[open]
\ アプリをリリースしました /
環境
- Android Studio:Flamingo
- Kotlin:1.8.20
配列を条件に合致する要素のみにフィルタリング:filter
Kotlinで配列(リスト)を条件に合致する要素のみにフィルタリングするにはfilter
メソッドを使用します。フィルタリング条件はラムダ式(無名関数)内で指定します。ラムダ式内ではit
でリスト内の要素に参照することが可能です。
val list = listOf(10, 4, 5, 1, 2, 7, 9)
// 偶数のみにフィルタリング
val filteredList = list.filter { it % 2 == 0 }
print(filteredList) // [10, 4, 2]
配列を条件に合致しない要素のみにフィルタリング:filterNot
filter
とは違い条件に合致しない要素のみにフィルタリングしたい場合はfilterNot
メソッドを使用します。条件はラムダ式で指定します。
val list = listOf(10, 4, 5, 1, 2, 7, 9)
// 5以下のみにフィルタリング
val filteredList = list.filterNot { it > 5 }
print(filteredList) // [4, 5, 1, 2]
nullでない要素のみにフィルタリング:filterNotNull
nullでない要素のみにフィルタリングしたい場合はfilterNotNull
メソッドを使用します。
val list = listOf(10, null, 4, null, 5, 1, 2, null, 7, 9)
// nullでない要素のみにフィルタリング
val filteredList = list.filterNotNull()
print(filteredList) // [10, 4, 5, 1, 2, 7, 9]
インデックスも条件に含めてフィルタリング:filterIndexed
配列のインデックスも条件に含めてしたい場合はfilterIndexed
メソッドを使用します。ラムダ式の中で2つの引数を受け取れるのでindex
とvalue
とすることでインデックスと要素を参照することが可能です。
val list = listOf(10, 4, 5, 1, 2, 7, 9)
// 偶数のインデックスかつ5以上のみにフィルタリング
val filteredList = list.filterIndexed { index, value -> index % 2 == 0 && value > 5 }
print(filteredList) // [10, 5, 7]
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。