KotlinのPairについて

採用はこちら

Kotlinには、2つの値を1つのオブジェクトとして扱うための便利な型として「Pair」が用意されています。

例えば「名前と年齢」「キーと値」「座標のXとY」など、関連する2つの値を簡単にまとめることができます。

この記事では、KotlinのPairについて以下の内容を詳しく解説します。

  • Pairとは何か
  • Pairの作り方
  • 値の取り出し方
  • 分解宣言
  • to を使ったPairの生成
  • Mapとの関係
  • Pairを使うべきケースと使わない方がよいケース

Kotlin初心者から実務レベルまで理解できるよう、順番に解説していきます。

目次

Pairとは

Pairは、2つの値を保持するためのデータクラスです。

型定義は次のようになっています。

data class Pair<out A, out B>(
    val first: A,
    val second: B
)

つまりPairは、

  • first
  • second

という2つのプロパティを持ち、それぞれ任意の型を格納できます。

例えば次のように使用します。

val pair = Pair("Apple", 100)

この場合、値は次のように保持されます。

first  = "Apple"
second = 100

このように、2つの関連データを1つのオブジェクトとして扱えるのがPairの特徴です。

Pairの作り方

Pairは Pair() コンストラクタを使って作成できます。

val pair = Pair("Tokyo", 14000000)

Kotlinでは型推論が働くため、型は自動的に次のように決定されます。

Pair<String, Int>

型を明示することも可能です。

val pair: Pair<String, Int> = Pair("Tokyo", 14000000)

Pairの値の取り出し方

Pairの値は、firstsecond を使って取得できます。

val pair = Pair("Apple", 100)

println(pair.first)
println(pair.second)

出力

Apple
100

例えば、座標データとして使うこともできます。

val position = Pair(10, 20)

println(position.first)  // x座標
println(position.second) // y座標

分解宣言(Destructuring)

Kotlinでは、Pairを分解宣言で取り出すことができます。

val pair = Pair("Apple", 100)

val (name, price) = pair

println(name)
println(price)

出力

Apple
100

これは内部的に

component1()
component2()

という関数が呼び出されています。

Pairは data class なので、これらの関数が自動生成されています。

to を使ったPairの生成

Kotlinでは to という infix関数を使って、簡単にPairを作ることができます。

val pair = "Apple" to 100

この式の評価結果は次の型になります。

Pair<String, Int>

つまり toPairを生成する関数として使われることが多い構文です。

val user = "Taro" to 25

Pairの実践的な使い方

Pairは実務でもさまざまな場面で使われます。

Mapを作るとき

KotlinではMapを作るときに、Pairがよく使われます。

val map = mapOf(
    "apple" to 100,
    "banana" to 150,
    "orange" to 200
)

このとき

"apple" to 100

Pair<String, Int> を生成しており、
mapOf() にキーと値の組として渡されています。

関数の戻り値として使う

複数の値を返したい場合にもPairを使えます。

fun getUser(): Pair<String, Int> {
    return "Taro" to 20
}

呼び出し側では分解宣言が使えます。

val (name, age) = getUser()

一時的なデータ構造

簡単なデータを一時的にまとめたいときにも便利です。

val list = listOf(
    "A" to 10,
    "B" to 20,
    "C" to 15
)

Pairを使うべきケース

Pairは次のようなケースに向いています。

  • 簡単な値の組み合わせ
  • 一時的なデータ
  • Map作成時のキーと値
  • 関数の簡単な戻り値

return result to message

Pairを使わない方がよいケース

Pairは便利ですが、意味のあるデータ構造には向いていない場合があります。

例えば次のコードです。

val user = Pair("Taro", 20)

この場合

first  = ?
second = ?

となり、データの意味が分かりにくいという問題があります。

このような場合は、専用のデータクラスを作る方が読みやすくなります。

data class User(
    val name: String,
    val age: Int
)
val user = User("Taro", 20)

このようにすると、コードの可読性が大きく向上します。

PairとTripleの違い

Kotlinには、3つの値をまとめるための Triple という型もあります。

val triple = Triple("A", 10, true)

Tripleは次のプロパティを持っています。

first
second
third

まとめ

KotlinのPairは、2つの値をまとめるためのシンプルなデータクラスです。

主な特徴をまとめると次の通りです。

特徴内容
data class
プロパティfirst / second
生成方法Pair(a, b) または a to b
用途Map生成、戻り値、一時データ
注意点意味のあるデータにはdata classが適している

Pairはシンプルで便利ですが、データの意味が重要な場合には専用の型を設計することが推奨されます。

以上、KotlinのPairについてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次