본문 바로가기
개발

compareTo() 정리(Int) - Kotlin (2)

by 준그래머 2021. 3. 12.
반응형

이전 글

 

compareTo() 정리(String, Int) - Kotlin (1)

예전부터 뭔가를 정렬할 때, 가장 많이 썼던 함수 중 하나가 compareTo()였다. 하지만 이 함수를 쓰면서도 정확하게 어떤 식으로 반환되는지 Int형일 경우와 String형일 경우 차이가 무엇인지 등 정확

junyoeng.tistory.com

 

이전 글에서 compareTo()의 String을 주로 정리를 해봤다면 이번에는 Int형을 기준으로 정리해보려 한다.

 

Int형을 compareTo() 함수를 통해 비교하며 정리한 건 아래와 같다.

 

Int형의 반환 값은 1, 0 , -1 총 3가지만 존재한다. 기준 값이 비교 값보다 더 클 경우 1을 반환하고 기준 값과 비교 값이 같은 경우 0을 반환하며 기준 값보다 비교 값이 더 큰 경우에는 -1을 반환한다.

 

val num1 = 100
val num2 = -12
val num3 = 1

val num1_num2 = num1.compareTo(num2)
val num2_num3 = num2.compareTo(num3)
val num1_num1 = num1.compareTo(num1)

println("${num1}.compareTo(${num2}): $num1_num2")
println("${num2}.compareTo(${num3}): $num2_num3")
println("${num1}.compareTo(${num1}): $num1_num1")

위에서부터 하나씩 살펴보면

 

100이 -12 보다 크기 때문에 1이 반환

 

-12는 1 보다 작기 때문에 -1이 반환

 

100과 100은 서로 같은 값이기 때문에 0을 반환

 

String에 비해 Int형 비교에 대한 포스팅이 너무 짧아서 좀 그렇긴 하지만 이 정도면 되지 않을까 싶다...  

 

 

풀 소스 코드

fun main(args: Array<String>) {

    val a = "123"
    val b = "193"
    val c = "125"

    val a_a = a.compareTo(a)
    val a_b = a.compareTo(b)
    val b_a = b.compareTo(a)
    val a_c = a.compareTo(c)

    println("\"${a}\".compareTo(\"${b}\"): $a_b")
    println("\"${b}\".compareTo(\"${a}\"): $b_a")
    println("\"${a}\".compareTo(\"${a}\"): $a_a")
    println("\"${a}\".compareTo(\"${c}\"): $a_c")

    println("\n")

    val alphaA = "a"
    val alphaP = "p"
    val alphaUpperA = "A"
    val alpahUpperZ = "Z"

    val alphaA_alphaP = alphaA.compareTo(alphaP)
    val alphaP_alphaA = alphaP.compareTo(alphaA)
    val alphaA_alphaUpperA = alphaA.compareTo(alphaUpperA)
    val alpahUpperZ_alphaP = alpahUpperZ.compareTo(alphaP)

    println("\"${alphaA}\".compareTo(\"${alphaP}\"): $alphaA_alphaP")
    println("\"${alphaP}\".compareTo(\"${alphaA}\"): $alphaP_alphaA")
    println("\"${alphaA}\".compareTo(\"${alphaUpperA}\"): $alphaA_alphaUpperA")
    println("\"${alpahUpperZ}\".compareTo(\"${alphaP}\"): $alpahUpperZ_alphaP")

    println("\n")

    val blank = ""
    val alphaB = "b"
    val d = "3"
    val e = "142"
    val str = "baserdpp"

    val alphaB_blank = alphaB.compareTo(blank)
    val blank_d = blank.compareTo(d)
    val e_blank = e.compareTo(blank)
    val blank_str = blank.compareTo(str)

    println("\"${alphaB}\".compareTo(\"${blank}\"): $alphaB_blank")
    println("\"${blank}\".compareTo(\"${d}\"): $blank_d")
    println("\"${e}\".compareTo(\"${blank}\"): $e_blank")
    println("\"${blank}\".compareTo(\"${str}\"): $blank_str")
    println("\n")

    val sameString1 = "090"
    val sameString2 = "090090"
    val anotherString = "009009"

    val sameString1_sameString2 = sameString1.compareTo(sameString2)
    val sameString1_anotherString = sameString1.compareTo(anotherString)
    val anotherString_sameString2 = anotherString.compareTo(sameString2)

    println("\"${sameString1}\".compareTo(\"${sameString2}\"): $sameString1_sameString2")
    println("\"${sameString1}\".compareTo(\"${anotherString}\"): $sameString1_anotherString")
    println("\"${anotherString}\".compareTo(\"${sameString2}\"): $anotherString_sameString2")
    println("\n")

    val num1 = 100
    val num2 = -12
    val num3 = 1

    val num1_num2 = num1.compareTo(num2)
    val num2_num3 = num2.compareTo(num3)
    val num1_num1 = num1.compareTo(num1)

    println("${num1}.compareTo(${num2}): $num1_num2")
    println("${num2}.compareTo(${num3}): $num2_num3")
    println("${num1}.compareTo(${num1}): $num1_num1")
}
반응형