코틀린

Do it! 코틀린 프로그래밍, 09-1 컬렉션의 구조와 기본

조요피 2021. 8. 28. 20:20

컬렉션(Collection)이란 자주 사용하는 기초적인 자료구조를 모아 놓은 일종의 프레임워크로 표준 라이브러리로 제공되고 있다.

자료구조론은 어떻게 하면 효율적으로 데이터를 다룰 것인가에 초점을 맞춘 학문.

코틀린의 컬렉션

컬렉션의 종류

코틀린의 컬렉션은 자바 컬렉션의 구조를 확장한 것.

하지만, 자바와는 다르게 불변형(immutable)과 가변형(mutable)으로 나뉜다.

가변현 컬렉션은 객체에 데이터를 추가하거나 변경할 수 있고

불변형 컬렉션은 데이터를 한번 할당하면 읽기 전용이 된다.

자바에서는 오직 가변형 컬렉션만 취급되므로 자바와 상호작용하는 코드에서 주의해야한다.

컬렉션 불변형(읽기 전용) 가변형
List listOf mutableListOf, arrayListOf
Set setOf mutableSetOf, hashSetOf, linkedSetOf, sortedSetOf
Map mapOf mutableMapOf, hashMapOf, linkedMapOf, sortedMapOf

변수를 선언할 때 불변형 val의 사용을 권장하듯이, 컬렉션도 되도록이면 읽기 전용인 불변형으로 선언할 것을 권장.

컬렉션 인터페이스

iterator()는 hasNext()와 next() 메서드를 가지고 요소를 순환하게 됨.

hasNext()는 읽을 요소가 있는지 확인하며, next()는 데이터를 반환한다.

형식 매개변수를 공변성을 제공하도록 out으로 선언되어 있음.

Iterable로부터 확장된 Collection 인터페이스는 불변형이므로 여기서 확장된 Set과 List는 읽기 전용 컬렉션.

  • Collection 인터페이스의 주요 멤버
    • size : 컬렉션의 크기
    • isEmpty() : 컬렉션이 비어 있으면 true
    • contains(element: E) : 특정 요소가 있다면 true
    • containsAll(elements: Collection<E>) : 인자로 받아들인 컬렉션이 있다면 true
  • MutableCollection 인터페이스의 멤버
    • add(element: E) : 인자로 전달 받은 요소를 추가하고 true 반환, 이미 요소가 있거나 중복이 허용되지 않으면 false
    • remove(element: E) : 인자로 전달 받은 요소를 삭제 후 true, 삭제하려는 요소가 없다면 false
    • allAll(elements: Collection<E>) : 컬렉션을 인자로 전달 받아 모든 요소를 추가하고 true, 실패하면 false
    • removeAll(elements: Collection<E>) : 컬렉션을 인자로 전달 받아 모든 요소를 삭제하고 true, 실패하면 false
    • retainAll(elements: Collection<e>) : 인자로 전달 받은 컬렉션의 요소만 보유, 성공하면 true, 실패하면 false
    • clear() : 모든 요소 삭제