[Kotlin] associate

델버·2022년 7월 21일
0

Kotlin

목록 보기
18/18

associate

  • 어떤 데이터를 Map으로 만들어 key,value로 묶어줄 수 있다.
  • key값은 중복되지 않으므로 만약 중복된 key값이 들어오게 되면 마지막으로 들어온 값이 map에 추가된다.
fun main() {
    val milks = listOf(
        Milk("스누피","GS",1500),
        Milk("서울우유","CU",2500),
        Milk("바나나우유","GS",1800))
    val byConvenience1 = milks.associate { it.let{ (name,convenience, price) -> convenience to name}}
    val byName1 = milks.associate { it.let{ (name,convenience, price) -> name to price}}
    val byConvenience2 = milks.associateBy(Milk::convenience)
    val byName2 = milks.associateBy { it.name }
    val byWith = milks.associateWith{it.convenience}

    println(byConvenience1) // {GS=바나나우유, CU=서울우유}
    println(byName1)         // {스누피=1500, 서울우유=2500, 바나나우유=1800}
    println(byConvenience2) // {GS=바나나우유, CU=서울우유}
    println(byName2)
    // {스누피=Milk(name=스누피, convenience=GS, price=1500),
    // 서울우유=Milk(name=서울우유, convenience=CU, price=2500),
    // 바나나우유=Milk(name=바나나우유, convenience=GS, price=1800)}
    println(byWith)
    //    {Milk(name=스누피, convenience=GS, price=1500)=GS, 
    //    Milk(name=서울우유, convenience=CU, price=2500)=CU, 
    //    Milk(name=바나나우유, convenience=GS, price=1800)=GS}
}
data class Milk(val name : String, val convenience : String, val price : Int)

associate

  • Pair의 형태로 key와 value를 만든다.

associateBy(class::propertie1,class::propertie2)

  • 파라미터에 프로퍼티를 넣어 (key,value)로 만든다.

associateBy{ key로 만들 propertie}

  • key 값을 기준으로 value값에는 배열의 객체가 들어간다.

associateWith{value로 만들 propertie}

  • value를 기준으로 key에는 배열의 객체가 들어간다.

참고

0개의 댓글