컬렉션의 plus와 minus 연산자

컬렉션의 plus와 minus 연산자

컬렉션에 다른 요소를 더하거나 뺄 때, Kotlin에서는 plus(+)와 minus(-) 연산자가 준비돼 있어요. 두 연산자 모두 첫 번째 피연산자로 컬렉션을 받고, 두 번째 피연산자로는 요소 하나 또는 또 다른 컬렉션이 올 수 있어요. 반환 값은 새로운 읽기 전용 컬렉션이에요.

  • plus의 결과에는 원래 컬렉션의 요소 그리고 두 번째 피연산자의 요소가 모두 들어 있어요.
  • minus의 결과에는 원래 컬렉션의 요소 중 두 번째 피연산자의 요소를 나머지가 들어 있어요. 두 번째 피연산자가 요소 하나라면 minus는 그 요소의 첫 번째 등장을 없애고, 컬렉션이라면 그 요소들의 모든 등장을 제거해요.
fun main() {
//sampleStart
    val numbers = listOf("one", "two", "three", "four")

    val plusList = numbers + "five"
    val minusList = numbers - listOf("three", "four")
    println(plusList)
    println(minusList)
//sampleEnd
}

출처: Kotlin 공식 문서

본문

맵에서의 plusminus 연산자에 대한 자세한 내용은 맵 연산에서 다뤄요. 컬렉션에는 복합 대입 연산자인 plusAssign(+=)과 minusAssign(-=)도 정의되어 있어요. 그런데 읽기 전용 컬렉션에서는 이 연산자들이 실제로는 plusminus를 실행하고 그 결과를 같은 변수에 다시 대입하려고 해요. 그래서 var로 선언된 읽기 전용 컬렉션에서만 쓸 수 있어요. 가변 컬렉션(val)에서는 컬렉션 자체를 수정해요. 자세한 내용은 컬렉션 쓰기 연산 문서를 참고해 주세요.

더 알아보기 (Learn more)

  • 맵 연산 — 맵에 대한 plus/minus 동작을 자세히 다뤄요.
  • 시퀀스 — 컬렉션의 지연 연산 방식에 대해 설명해요.
  • 컬렉션 쓰기 연산+=/-=를 비롯한 수정 연산을 정리해요.