기록

Kotlin Map, Filter 예제 본문

[Study]/Kotlin

Kotlin Map, Filter 예제

Dannnnnn 2022. 6. 22. 01:36
반응형
import kotlinx.coroutines.launch
import kotlinx.coroutines.*


fun main() {
    val api = NamesApi()
    val namesJson = api.getNames();
    
    println("----- ORIGINAL JSON NAMES:")
    println(api.getNames());
    
    val names = nameFromJson(namesJson);

    println();
    println("----- CONVERTED NAMES:")
    println(names);

}

fun nameFromJson(namesJson: List<NameJson>): List<Name> {    
    return namesJson.filter { nameJson ->
        nameJson.lastName[0] == 'K'
    }.map { nameJson ->
        if(nameJson.isReversed)
        Name(
            fullName = nameJson.lastName + " " + nameJson.firstName
        )
        else
        Name(
            fullName = nameJson.firstName + " " + nameJson.lastName
        )
    }
}

class Name(
    val fullName: String
) {
	override fun toString(): String = "\n	Full Name: '$fullName'\n"
}

class NamesApi { 
    fun getNames() : List<NameJson> {
        return listOf(
            NameJson("Sora", "Kim", true),
            NameJson("Hussien", "Elmi", false),
            NameJson("Bruce", "Wayne", false),
            NameJson("Clark", "Kent", false),
        )
    }
    
}

class NameJson(
    val firstName: String,
    val lastName: String,
    val isReversed: Boolean
) {
    override fun toString(): String = "\nFirst Name: '$firstName'	Last Name: '$lastName' rev:$isReversed"
}

1. map에 조건 걸어 필요시 성 위치 바꾸기 (다른 타입 리스트로 변환할 때 조건 걸기 가능)

2. filter에 조건 걸어 성이 K인 사람들만 출력 (같은 리스트 타입에 조건 걸기)

반응형