컬렉션

이가현·2023년 8월 14일
0

코틀린

목록 보기
10/12

컬렉션

컬렉션이란 자주 사용하는 기초적인 자료구조를 모아놓은 프레임워크로 표준 라이브러리로 제공된다.

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

변수를 선언할 때 val의 사용을 권장하듯, 컬렉션도 되도록 불변형 선언을 권장한다.

List

순서에 따라 정렬된 요소를 갖는 컬렉션이다.

.
.

파이썬 for문과 비슷한 느낌으로 작동한다. indices는 각각 요소에 접근할 수 있게 한다.

가변형 List


가변형이기 때문에 추가와 삭제가 가능하다.


제네릭 표현을 생략하면 여러가지 자료형으로 구성된 리스트를 생성할 수 있다.


새로운 리스트를 생성해서 요소를 추가했다.

List와 배열의 차이

배열은 내부 구조상 고정된 크기의 메모리를 가지고 있다. List는 메모리가 고정되지 않고 자료구조에 따라 늘리거나 줄이는 것이 가능하다.

Set

Set은 정해진 순서가 없는 요소들의 집합을 나타내는 컬렉션이다. 집합의 개념이므로 중복이 허용되지 않는다.


중복이 삭제된다.

  • mutableSetOf( )

    중복은 추가할 수 없다. 요소는 유일하다.
    .

  • hashSetOf( )

    정렬 기능은 없지만 해시값을 통해 요소를 찾아내므로 검색 속도는 빅 오 표기법으로 O(1)의 상수 시간을 갖는다. 즉시 찾아내는 것이다.

  • SortedSetOf( )

    HastSet보다 성능이 떨어지고 데이터 추가, 삭제에 시간이 걸리지만 검색과 정렬이 뛰어나다는 장점이 있다.

  • LinkedSetOf( )

    링크드 리스트는 한 줄로 연결되어 있따. 따라서 자료형의 추가 및 삭제가 O(1)의 시간에 가능하다.

Map

키와 값의 쌍 형태로 저장된다. (파이썬의 딕셔너리와 유사하다.)

인덱스 대신 키 값을 사용한다.

  • mutableMapOf( )

  • HashMapOf, sortedMapOf, LinkedMapOf

컬렉션의 확장 함수



매우 직관적인 방법이다.

요소의 처리와 집계



forEach는 각 요소를 람다식으로 처리한 후 컬렉션을 반환하지 않는다.


onEach는 각 요소를 람다식으로 처리한 후 컬렉션을 반환하지 않는다.


짝수에 해당하는 요소인 3개를 반환한다.


요소의 검사



요소의 필터와 추출








요소의 매핑


요소 처리와 검색






컬렉션의 분리와 병합



시퀀스

코틀린의 시퀀스는 순차적인 컬렉션으로 요소의 크기를 특정하지 않고 나중에 결정할 수 있는 특수한 컬렉션이다.

요소 값 생성하기


map과 filter 같은 연산을 사용할 수 있다.

요소 값 가져오기


시퀀스를 사용하면 요소의 개수가 많을 때 속도나 메모리 측면에서 훨씬 좋은 성능을 낼 수 있다.

  • asSequence( )의 시간 성능


    시퀀스를 사용할 때 적은 시간이 걸린다.

.
.
.

시퀀스를 이용한 피보나치

시퀀스를 이용한 소수

1개의 댓글

comment-user-thumbnail
2023년 8월 14일

좋은 정보 감사합니다

답글 달기