[Kotlin] Collection(List, Set, Map)

2024. 10. 27. 07:29·학습 기록/kotlin
반응형

List

: 순서가 있는 요소들의 모임

특징

  • 순서가 있음
  • 중복된 값을 입력할 수 있음
  • 인덱스를 통해 접근 가능

ListOf, MutableListOf

  • ListOf : 선언 이후에 값을 변경할 수 없는 리스트(immutable , read-only)
  • MutableListOf : 선언 이후에 값을 추가, 삭제, 수정이 가능한 리스트(mutable, read-write)
val items1 = listOf(1,2,3,4,5)

val items2 = mutableListOf(1,2,3,4,5)
items2.add(6) // 1,2,3,4,5,6
items2.remove(3) // 1,2,4,5,6

자주 쓰이는 함수

size() : Int : list의 길이를 리턴

contains(Element) : Boolean : 특정 요소의 존재 여부를 리턴

get(index : Int) : Element : 해당 인덱스에 위치하는 요소를 리턴

distinct() : List : 중복되는 요소를 제외한 리스트를 리턴

filter(condition) : List : 주어진 조건(condition)에 맞는 요소들로 이뤄진 리스트를 리턴

map{transform} : List : 리스트의 각 요소를 변환(transform)한 결과로 이뤄진 리스트를 리턴

ex) list.split(",").map { it.trim() } // trim: 양 끝 공백을 없애주는 함수

associate{it to someValue} : Map : 리스트의 각 요소를 키와 값으로 매핑하여 맵을 리턴

ex) items.map{ it \* 2 }

sortedBy{selector} : List : 기준(selector)에 따라 오름차순 정렬
sortedByDescending : => 내림차순 정렬


Set

: 순서가 없는 고유한 값들의 모임

특징

  • 순서가 없음
  • 중복이 허용되지 않음. 즉 동일한 값을 저장할 수 없고 추가해도 무시됨

SetOf, MutableSetOf

  • SetOf : 선언 이후에 값을 변경할 수 없는 Set(immutable , read-only)
  • MutableSEtOf : 선언 이후에 값을 추가, 삭제, 수정이 가능한 Set(mutable, read-write)
val item1 = setOf(1,2,3,3,3) // 1,2,3

val item2 = mutableSetOf(1,2,3,3) // 1,2,3

item2.add(3) // 1,2,3
item2.remove(3) // 1,2

자주 쓰이는 함수

size() : Int : set의 길이를 리턴

contains(Element) : Boolean : 특정 요소의 존재 여부를 리턴

filter(condition) : List : 주어진 조건(condition)에 맞는 요소들로 이뤄진 리스트를 리턴

map{transform} : List : Set의 각 요소를 변환(transform)한 결과로 이뤄진 리스트를 리턴

associate{it to someValue} : Map : 리스트의 각 요소를 키와 값으로 매핑하여 맵을 리턴

ex) items.map{ it \\\* 2 }

sortedBy{selector} : List : 기준(selector)에 따라 오름차순으로 정렬 리스트를 리턴


Map

: key-value(키, 값) 쌍으로 이뤄진 요소들의 모임

특징

  • key-value 쌍 : 각 요소는 키와 이에 대응하는 값으로 이루어짐
  • 키는 중복 불가 : 동일한 키가 중복될 수 없음. 중복된 키 추가할 경우 기존 값이 덮어짐
  • 값은 중복 가능

MapOf, MutableMapOf

  • MapOf : 선언 이후에 값을 변경할 수 없는 Map(immutable , read-only)
  • MutableMapOf : 선언 이후에 값을 추가, 삭제, 수정이 가능한 Map(mutable, read-write)
    val item1 = mapOf("a" to 1, "b" to 2, "c" to 3) // {a=1, b=2, c=3}

    val item2 = mutableMapOf("a" to 1, "b" to 2) // {a=1, b=2}

    item2["c"] = 3 // {a=1, b=2, c=3}
    item2["c"] = 4 // {a=1, b=2, c=4}
    item2.remove("c") //{a=1, b=2}

자주 쓰이는 함수

get(key) : value? : 키에 대한 값을 리턴. 키가 존재하지않으면 null을 리턴

containsKey(key) : Boolean : 키의 존재 여부를 리턴

containsValue(value) : Boolean : 값의 존재 여부를 리턴

keys : Set<key> : 맵의 모든 키를 Set으로 리턴

values : Collection<value> : 맵의 모든 값을 컬렉션으로 리턴

filter((key,value) -> condition) : Map : 조건을 만족하는 키-값 쌍들을 맵으로 리턴

map{(key,value)-> transform} : Map : Map의 각 요소를 변환(transform)한 결과로 이뤄진 리스트를 리턴

putIfAbsent(key, value) : value? : key가 맵에 존재하지 않을 경우에만 추가됨

val map = mutableMapOf("a" to 1)
map.putIfAbsent("a", 2) // 키(a)가 존재하므로 추가 안됨, map={a=1}
println(map.putIfAbsent("a", 2)) // 1

map.putIfAbsent("b", 2) //키(b)가 존재하지 않으므로 추가됨, map={a=1, b=2}
println(map.putIfAbsent("c", 3)) // null

마무리하며

이번에 map에 대해서 공부하며 list, set과 다른 점이 많은 것 같아 collection에 대해 한번에 정리해봤다. 전체적으로 함수들이 비슷하지만 map은 조금 다른 느낌이다. 기능은 비슷한데 함수명이 다르기도 하구..

사실 이 글을 쓰기 시작한지 약 4일째이지만.. 이것 저것 찾아보느라 이제야 올린다.. 여기에 올린 것들이 함수 전부는 아니지만 내가 코딩을 하며 썼던 함수들과 공식문서를 보고 자주 쓰게 될 것 같은 함수들도 정리정리

코틀린 Collection 공식문서

반응형

'학습 기록 > kotlin' 카테고리의 다른 글

[Kotlin] 플랫폼 타입(Platform type)  (0) 2025.10.20
[Kotlin] Class - getter, setter  (0) 2024.10.29
[Kotlin] 반복문(while, for)  (1) 2024.10.20
[Kotlin] String에 쓰이는 함수들  (1) 2024.10.19
[Kotlin] 기본 문법  (0) 2024.10.15
'학습 기록/kotlin' 카테고리의 다른 글
  • [Kotlin] 플랫폼 타입(Platform type)
  • [Kotlin] Class - getter, setter
  • [Kotlin] 반복문(while, for)
  • [Kotlin] String에 쓰이는 함수들
BaekCCI
BaekCCI
  • BaekCCI
    BaekLog
    BaekCCI
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 학습 기록
        • 안드로이드
        • 문제풀이
        • kotlin
      • 우아한 테크코스
      • 백씨의 하루
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    코틀린
    백준
    알고리즘
    소프티어
    i/o extended android
    androiddeveloper
    Java
    Android
    우테코
    Algorithm
    우아한테크코스
    프로그래머스
    Kotlin
    gdg korea
    softeer
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.6
BaekCCI
[Kotlin] Collection(List, Set, Map)
상단으로

티스토리툴바