filterIsInstanceで特定の型の要素だけを抽出

Kotlin
記事内に広告が含まれる場合があります

Kotlinでは、リスト内の特定の型の要素のみを取得したい場合に filterIsInstance を使うと、型チェックを簡潔に行いながらフィルタリングができます。

filterIsInstanceの基本的な使い方

Kotlin
val mixedList: List<Any> = listOf(1, "Kotlin", 2.5, "Java", 3)

val strings = mixedList.filterIsInstance<String>()

println(strings) // 出力: [Kotlin, Java]

ポイント:

  • filterIsInstance<T>() を使うと、リストから T 型の要素のみを抽出 できる
  • Any 型のリストから 安全に特定の型を取り出せる

filterIsInstanceの活用例

1. 異なるデータ型を含むリストから特定の型を抽出

Kotlin
val dataList: List<Any> = listOf(100, "Kotlin", 42.0, "Java", 200)

val numbers = dataList.filterIsInstance<Int>()

println(numbers) // 出力: [100, 200]

リスト内の Int 型の要素のみを取得できます。


2. クラスの型でフィルタリング

Kotlin
open class Animal
class Dog : Animal()
class Cat : Animal()

val animals: List<Animal> = listOf(Dog(), Cat(), Dog())

val dogs = animals.filterIsInstance<Dog>()

println(dogs) // 出力: [Dog@xxxxxx, Dog@yyyyyy]

filterIsInstance を使うと、特定のサブクラスのみを抽出 することも可能です。


3. マップの値から特定の型を取得

Kotlin
val mixedMap: Map<String, Any> = mapOf("name" to "Kotlin", "version" to 1.8, "active" to true)

val numbers = mixedMap.values.filterIsInstance<Double>()

println(numbers) // 出力: [1.8]

Mapvalues を対象に filterIsInstance を適用することで、特定の型の値のみを取得できます。


filterIsInstanceを活用するメリット

  1. リスト内の特定の型の要素を安全に抽出できる
  2. スマートキャストを使わずに型チェックが可能
  3. ジェネリクスやクラス型のフィルタリングが簡単にできる

リストやマップの要素から 特定の型のデータのみを扱いたい 場面では、ぜひ filterIsInstance を活用してみてください!

タイトルとURLをコピーしました