본문 바로가기
Backend/Java & Kotlin

[Kotlin] Pair와 Triple

by Hyeri.dev 2024. 4. 18.

Pair? Triple?

코틀린에는 변수의 값들을 하나로 묶어 사용할 수 있는 data class가 존재한다.

 

이는 자료구조 Map과 비슷한 형상을 띄고 있지만 key-value 구조가 아닌 정말 여러 개의 값을 하나의 묶음으로 표현한 것이므로 자료구조의 개념이 아닌 단순하게 편의성을 위해 변수를 묶어 사용한다.

 

이 data class는 PairTriple로 이름에서 알 수 있듯이 Pair는 두 개의 값을, Triple은 세 개의 값을 묶어 사용한다. 

두 클래스는 Tuples 클래스에 정의되어 있다.

 

💡
이 클래스의 값에는 의미가 부여되지 않으며, 어떤 목적으로도 사용할 수 있습니다.

위 설명에서 알 수 있듯이 단순 편의성을 위해 정의된 data class임을 알 수 있다.

정의하는 법

Pair와 Triple은 묶는 변수의 개수만 다를 뿐 사용하는 방법은 같으므로 Pair만 작성하도록 하겠다.

val pair = Pair<String, Int>("Hello", 3)

val pair = Pair("Hello", 3)             // 타입 생략

val (a, b) = Pair("Hello", 3)

to

infix 함수인 to를 사용하여 Pair를 정의할 수 도 있다.

val pair: Pair<String, Int> = "Hello" to 3

val (a, b) = "Hello" to 3

함수

first, second, third

val triple = Triple("Hello", 1, 0.3)

println(triple.first)            // Hello
println(triple.second)           // 1
println(triple.third)            // 0.3

toString()

val pair = Pair("Hello", 3)   
val triple = Triple("bye", 1, 0.3)

println(pair.toString())            // (Hello, 3)
println(triple.toString())          // (bye, 1, 0.3)

toList()

val pair = Pair("Hello", 3)   
val triple = Triple("bye", 1, 0.3)

println(pair.toList())         // [Hello, 3]
println(triple.toList())       // [bye, 1, 0.3]

실제 서비스에서 상품 가격 + 옵션 가격을 쉽게 처리하기 위해 Pair로 각각 가격을 주입하여 로직에 태웠다. 이 개념을 몰랐을 때에는 별도의 테이블을 구축해야 하나, 혹은 옵션 가격을 태우기 위해 상품 로우를 하나 더 추가해야 하나 했다. 

 

쩝. 

 

역시 많이 알아야 해결법도 여러 방면이 나오는 듯 싶고 공부 해야지...🫠