TIL

Lec 15. 코틀린에서 배열과 컬렉션을 다루는 방법

1. 배열

// 코틀린에서 배열을 만들고 순회하기
fun main() {
  val array = arrayOf(100, 200)
  
  for (i in array.indices) { // 인덱스만 받아오기
    println("${i} ${array[i]}") 
  }
  
  for ((idx, value) in array.withIndex()) { // 인덱스와 값을 함께 받아오기
    println("${idx} ${value}") 
  }
  
  array.plus(300) // 배열에 값을 쉽게 추가할 수 있다.
}

2. 코틀린에서의 Collection - List, Set, Map

코틀린의 List

fun main() {
  val numbers = listOf(100, 200) // 불변 리스트 생성
  val emptyList = emptyList<Int>() // 빈 리스트 생성, 타입을 명시해야 한다.
  
  printNumbers(emptyList()) // 타입이 추론 가능한 경우 타입 생략 가능
  
  val mutableNumbers = mutableListOf(100, 200) // 가변 리스트 생성, 기본 구현체는 ArrayList
  mutableNumbers.add(300)
}

private fun printNumbers(numbers: List<Int>) {
  // ...
}
fun main() {
  val numbers = listOf(100, 200)

  println(numbers[0]) // [] 문법 사용 가능
  
  for (number in numbers) { // for each
    println(number)
  }
  
  for ((idx, value) in numbers.withIndex()) { // 전통적 for문 느낌
    println("$idx $value") 
  }
}

코틀린의 Set

fun main() {
  val numbers = setOf(100, 200) // 불변 집합 생성
  val mutableNumbers = mutableSetOf(100, 200) // 가변 집합 생성, 기본 구현체는 LinkedHashSet
  
  for (number in numbers) { // for each
    println(number)
  }
  
  for ((idx, value) in numbers.withIndex()) { // 전통적 for문 느낌
    println("$idx $value") 
  }
}

코틀린의 Map

fun main() {
  val oldMap = mutableMapOf<Int, String>() // 가변 map 생성
  oldMap[1] = "MONDAY"
  oldMap[2] = "TUESDAY"
  
  val immutableMap = mapOf(1 to "MONDAY", 2 to "TUESDAY") // 불변 map 생성
}
fun main() {
  val oldMap = mutableMapOf<Int, String>()
  oldMap[1] = "MONDAY"
  oldMap[2] = "TUESDAY"
  
  for (key in oldMap.keys) { // key만 순회
    println(oldMap[key])
  }
  
  for ((key, value) in oldMap.entries) { // key, value 순회
    println("$key $value")
  }
}

3. 컬렉션의 null 가능성, Java와 함께 사용하기

컬렉션의 null 가능성

Java와 함께 사용 시 주의 점