반응형

이 게시물은 다음 링크를 참조하여 학습했습니다.

 

Kotlin - Collections 소개 및 사용법 정리 (List, Map, Set)

Collection(콜렉션)은 대부분의 프로그래밍 언어에서 지원하는 자료구조입니다. Collection은 List, Map, Set 등이 있고 Generic으로 구현이 되어 다양한 타입과 함께 사용될 수 있습니다. 코틀린의 Collection

codechacha.com

 

[Kotlin] 컬렉션(Collection) - List

모든 내용은 Do it! 코틀린 프로그래밍을 바탕으로 정리한 것입니다. 컬렉션(Collection) 컬렉션은 자주 사용하는 기초적인 자료구조를 모아 놓은 일종의 프레임워크로 표준 라이브러리로 제공하고

junyoung-developer.tistory.com

 

[Kotlin] 컬렉션(Collection) - Set, Map

모든 내용은 Do it! 코틀린 프로그래밍을 바탕으로 정리한 것입니다. 컬렉션(Collection) 컬렉션은 자주 사용하는 기초적인 자료구조를 모아 놓은 일종의 프레임워크로 표준 라이브러리로 제공하고

junyoung-developer.tistory.com

 

[Kotlin] 컬렉션(Collection)의 확장함수

모든 내용은 Do it! 안드로이드 앱 프로그래밍을 바탕으로 정리한 것입니다. [이전 포스팅] 코틀린의 컬렉션 - List, Set, Map에 대한 내용은 아래 포스팅 참고 [Kotlin] 컬렉션(Collection) - List 모든 내용

junyoung-developer.tistory.com

 

Kotlin 컬렉션 함수 API - filter, map, associate, groupBy ...

Kotlin에는 컬렉션을 다루기 편하게 확장함수들을 제공해준다. Java에 스트림 함수를 사용해본적이 있다면 친숙할 것이다. map, filter와 같은 메소드가 kotlin에서의 컬렉션 함수 API다. 만약에 Person 객

minz.dev

 

이 글에서는 Collection에 대한 기본적인 지식이 있다고 가정하고, Java Collection과의 차이점 위주로 서술하려고 한다.

Collection에 대해 잘 모른다면 아래 글들을 보고 오는것을 추천한다.

 

[Java#3] Array, ArrayList, Arrays

이 게시물은 다음 링크를 참조하여 학습했습니다. ArrayList (Java Platform SE 8 ) Resizable-array implementation of the List interface. Implements all optional list operations, and permits all elements..

seminzzang.tistory.com

 

[Java#4] Map, HashMap, TreeMap

이 게시물은 다음 링크를 참조하여 학습했습니다. Map (Java Platform SE 8 ) If the specified key is not already associated with a value (or is mapped to null), attempts to compute its value using the g..

seminzzang.tistory.com

 

[Java#5] Set, HashSet, TreeSet

이 게시물은 다음 링크를 참조하여 학습했습니다. Set (Java Platform SE 8 ) A collection that contains no duplicate elements. More formally, sets contain no pair of elements e1 and e2 such that e1.equ..

seminzzang.tistory.com

 

1. Immutable vs Mutable

코틀린의 Collection은 기본적으로 Mutable(가변의), Immutable(불변의)을 별개로 지원한다.

Mutable로 생성하면 추가, 삭제가 가능하지만 Immutable로 생성하면 수정이 불가능하다.

아래는 코틀린 Collection들의 상속 구조이다.

1-1. Immutable

Immutable 객체는 아래처럼 사용한다.

val list = listOf<String>("seminzzang", "seminzzang2", "seminzzang3")
val set = setOf<Int>(1,2,3,4,5)
val map = mapOf<String, String>("1" to "one", "2" to "two", "3" to "three")

 

1-2. Mutable

Mutable 객체는 아래처럼 사용한다.

val list = mutableListOf<String>("seminzzang", "seminzzang2", "seminzzang3")
val set = mutableSetOf<Int>(1,2,3,4,5)
val map = mutableMapOf<String, String>("1" to "one", "2" to "two", "3" to "three")

 

2. Collection 확장 함수

Collection의 확장 함수는 Java의 스트림과 유사한 기능을 제공한다.

내가 자주 사용할것 같은 기능들만 모아서 정리해봤다.

 

2-1. 집계

1) forEach

각 요소를 람다식으로 처리 (컬렉션 반환 X)

2) forEachIndexed

각 요소와 인덱스를 람다식으로 처리

3) onEach

각 요소를 람다식으로 처리하고 컬렉션을 반환받음

4) count

특정 조건에 해당하는 요소의 개수를 반환

 

2-2. 검사

1) all

람다식에서 모든 요소가 일치할 때 true 반환

2) any

최소한 하나 혹은 그 이상의 특정 요소가 일치하면 true 반환

 

2-3. 필터

1) filter

람다식에 따라 요소를 골라내는 메서드

2) filterNot

람다식 이외에 요소를 골라내는 메서드

3) filterNotNull

컬렉션에서 null을 제외하기 위한 메서드

 

2-4. 매핑

1) map

식을 적용해 새로운 컬렉션을 만들 수 있게 하는 메서드

(forEach와 비슷해보이지만, 주어진 컬렉션을 건드리지 않는다는 점에서 안전함)

2) mapIndexed

인덱스를 포함하고 주어진 식을 적용하여 새로운 컬렉션 반환

3) mapNotNull

null을 제외하고 식을 적용해 새로운 컬렉션 반환

 

2-5. 검색

1) find

조건식에 만족하는 첫 번째 검색된 요소 반환

 

3. Kotlin Collection 함수 API의 단점

Kotlin Collection 함수 API는 모든 엘리먼트에 대해 단계를 수행한 뒤에 다음단계로 넘어간다.

그래서 데이터 양이 많아질때 메모리 릭 이슈가 발생할 수 있다.

이를 위해 Sequence라는 컨테이너 타입을 사용하면 문제를 해결할 수 있다.

반응형

'Legacy' 카테고리의 다른 글

[Kotlin #5] Inline Functions  (0) 2022.05.16
[Kotlin #4] Scope Functions  (0) 2022.05.16
[Kotlin #2] 고급문법  (0) 2022.05.11
[Kotlin #1] 기본문법  (0) 2022.05.11
[Java#7] Queue, Deque, PriorityQueue  (0) 2022.05.04

+ Recent posts