조용한 담장

코틀린(Kotlin) Collections : Write Operations 본문

kotlin

코틀린(Kotlin) Collections : Write Operations

iosroid 2020. 4. 14. 13:55

kotlin

코틀린의 collection 의 Write Operations 에 대해 살펴보자.
원문 https://kotlinlang.org/docs/reference/collection-write.html 을 보며 정리.

Mutable collections 의 내용을 변경하는 동작을 살펴보자.

Adding elements

add() 를 사용한다.

val numbers = mutableListOf(1, 2, 3, 4)
numbers.add(5)
println(numbers)

// output:
// [1, 2, 3, 4, 5]

addAll()는 argument collection 의 모든 element 를 추가한다.

argument 로는 Set, List 외에도 Iterable, Sequence, Array 가 올 수 있다.

추가되는 위치를 지정할 수 있다.

val numbers = mutableListOf(1, 2, 5, 6)
numbers.addAll(arrayOf(7, 8))
println(numbers)
numbers.addAll(2, setOf(3, 4))
println(numbers)

// output:
// [1, 2, 5, 6, 7, 8]
// [1, 2, 3, 4, 5, 6, 7, 8]

plusAssign += 을 사용할 수 있다.

val numbers = mutableListOf("one", "two")
numbers += "three"
println(numbers)
numbers += listOf("four", "five")    
println(numbers)

// output:
// [one, two, three]
// [one, two, three, four, five]

Removing elements

remove() 를 사용하여 element 를 제거한다.

val numbers = mutableListOf(1, 2, 3, 4, 3)
numbers.remove(3)                    // removes the first `3`
println(numbers)
numbers.remove(5)                    // removes nothing
println(numbers)

// output:
// [1, 2, 4, 3]
// [1, 2, 4, 3]

한번에 여러개의 element 를 삭제할 때 사용하는 함수들:

  • removeAll() argument collection 에 있는 element 를 모두 삭제한다. predicate 를 사용하여 조건에 해당하는 경우만 삭제할 수도 있다.

  • retainAll() 는 removeAll() 와 반대로 argument 의 조건에 해당하는 것들을 제외하고 삭제한다.

  • clear() element 모두 삭제한 후 비어있는 상태로 남긴다.

val numbers = mutableListOf(1, 2, 3, 4)
println(numbers)
numbers.retainAll { it >= 3 }
println(numbers)
numbers.clear()
println(numbers)

val numbersSet = mutableSetOf("one", "two", "three", "four")
numbersSet.removeAll(setOf("one", "two"))
println(numbersSet)

// output:
// [1, 2, 3, 4]
// [3, 4]
// []
// [three, four]

minusAssign -= 를 사용할 수 있다.

연산의 오른쪽에는 element type 의 인스턴스 나 collection 이 올 수 있다.

element 가 오른쪽에 온 경우에는 처음 발견되는 element 를 삭제한다.

collection 이 오른쪽에 온 경우에는 발견되는 모든 element 를 삭제한다.

오른쪽에 온 collection 의 element 가 왼쪽 collection 에 없는 경우에는 동작에 아무 영향을 주지 않는다.

val numbers = mutableListOf("one", "two", "three", "three", "four")
numbers -= "three"
println(numbers)
numbers -= listOf("four", "five")    
//numbers -= listOf("four")    // does the same as above
println(numbers)    

// output:
// [one, two, three, four]
// [one, two, three]
Comments