Kotlin Collection 정리

패스트 캠퍼스 실무 프로젝트로 배우는 Kotlin & Spring 강의 정리

Colletion

  • 코틀린 표준 라이브러리에서 제공하는 기본 콜렉션 타입: List, Set, Map
  • 종류
  • 불변(Immutable): 읽기 전용 컬렉션
    • List, Set, Map
  • 가변(Mutable): 삽입, 수정, 삭제와 같은 쓰기 작업이 가능한 컬렉션
    • MutableList, MutableSet, MutableMap

코틀린 컬렉션

import java.util.*

fun main() {
    // immutable
    val currencyList = listOf("dollar", "euro", "won")

    // mutable
    val mutableCurrencyList = mutableListOf<String>().apply {
        add("dollar")
        add("yuan")
        add("won")
    }

    // immutable set
    val numberSet = setOf(1, 2, 3, 4)

    // mutable set
    val mutableNumberSet = mutableSetOf<Int>().apply {
        add(1)
        add(2)
        add(3)
    }

    // immutable map
    val numberMap = mapOf("one" to 1, "two" to 2, "three" to 3)

    // mutable map
    val mutableNumberMap = mutableMapOf<String, Int>().apply {
        set("one", 1)
        set("two", 2)
        set("three", 3)
    }

    mutableNumberMap["four"] = 4

    // collection builder
    // 내부에서는 Mutable 이지만 반환할 때 Immutable 타입
    val numberList: List<Int> = buildList {
        add(1)
        add(2)
        add(3)
    }
  
  	// linkedList
    val linkedList = LinkedList<Int>().apply {
        addFirst(1)
        add(2)
        addLast(4)
    }

    // arrayList
    val arrayList = ArrayList<Int>().apply {
        add(1)
        add(2)
        add(3)
    }

    // iterater
    val iterator = currencyList.iterator()
    while (iterator.hasNext()) {
        println(iterator.next())
    }
	
  	// for loop
    for (currency in currencyList) {
        println("currency = ${currency}")
    }
  
  	// forEach & lambda
    currencyList.forEach { println(it) }
  	currencyList.forEach(::println)
  
  	// map inline function
  	val currencyList = listOf("dollar", "euro", "won")
  	val upperList = lowerList.map { it.uppercase() }
  
  	// filter
  	val filteredList = upperList.filter { it == "A" || it == "C" }
  
  	// sequence
  	// terminal operator 동작한 후에 list 생성하게 됨
    val sequenceExample = upperList
        .asSequence()
        .filter { it == "A" }
        .filter { it == "B" }
        .filter { it == "C" }
        .toList()
}