신규 블로그를 만들었습니다!
코틀린의 이터레이터 맵(map)에 대해 살펴봅시다. for와 while도 있지만, 해당 글에서는 다루지 않습니다. 궁근하신 분은 아래 링크를 통해 확인 할 수 있습니다.
2019/02/13 - [Language/Kotlin] - 코틀린의 이터레이션 for, while 루프
맵 이터레이션
맵을 이용하기 위해 TreeMap을 사용합니다. (key와 value로 이루어져있음)
예제를 살펴보면 A부터 G까지 2진표현으로 변환하여 맵에 넣은뒤에, 맵 이터레이션을 이용하여 출력하는 예제입니다.
fun main(args: Array<String>) {
val binaryReps = TreeMap<Char, String>()
for (c in 'A'..'G') {
val binary = Integer.toBinaryString(c.toInt())
binaryReps[c] = binary
}
// 출력
for ((letters, binary) in binaryReps) {
println("${letters} : ${binary}")
}
}
3번째~ 6번째줄에서 TreeMap에 해당 알파벳에 대한 2진 표현을 구합니다. 여기서 키(key)는 알파벳(예: A)이고 값(value)은 2진표현(1000001)입니다.
4번째 줄을 보면, 2진 표현을 위해 Integer객체의 toBinaryString 메소드를 사용합니다.
8번째 ~ 10번째 줄은 맵 이터레이션하여, key와 value를 가져와 출력해주는 부분입니다.
여기서, 자바와 약간 다른점이 있는데
5번째 줄에 binaryReps[c] = binary입니다.(이 부분은 파이썬의 딕셔너리와 비슷하다.) Java에서는 해당 코드를 쓸때, binaryReps.put(c, binary);라고 표현합니다.
실행 결과
A : 1000001
B : 1000010
C : 1000011
D : 1000100
E : 1000101
F : 1000110
G : 1000111
이와 같은 방법은 맵이 아닌 컬렉션(Collection)에서도 사용할 수 있는데,
fun main(args: Array<String>) {
val list = arrayListOf("00", "01", "10", "11")
for ((index, item) in list.withIndex()) {
println("${index}의 이진수 : ${item}")
}
}
배열에서 withIndex()를 이용해서, index를 같이 가져와서 사용할 수 있습니다. (별도로 변수를 선언하고, 매번 그 변수를 증가 시켜줄 필요가 없습니다.)
실행 결과
0의 이진수 : 00
1의 이진수 : 01
2의 이진수 : 10
3의 이진수 : 11
본 글은 Dmitry Jemerov, Svetlana Isakova의 "Kotlin in action" 책을 참고하여 작성한 글입니다.
다른 글
2019/02/11 - [Language/Kotlin] - 코틀린, enum class와 when 사용하기
2019/02/12 - [Language/Kotlin] - 코틀린의 is와 스마트 캐스트(Smart cast)란?
2019/02/07 - [Algorithm/백준 온라인 저지] - 백준 2438번 별찍기, 코틀린으로 풀기
'Language > Kotlin' 카테고리의 다른 글
코틀린에서 in으로 범위 원소 검사하기 (0) | 2019.02.20 |
---|---|
코틀린 설치, 인텔리제이와 JDK 설치 (0) | 2019.02.15 |
코틀린의 이터레이션 for, while 루프 (0) | 2019.02.13 |
코틀린의 is와 스마트 캐스트(Smart cast)란? (2) | 2019.02.12 |
코틀린, enum class와 when 사용하기 (0) | 2019.02.11 |
최근댓글