[Kotlin] Collection 에 대해 알아보자

명지·2023년 10월 25일
2

코틀린

목록 보기
1/2
post-thumbnail

🤓 Collection 이란?

📎 Collection 은 대부분의 프로그래밍 언어에 대한 일반적인 개념으로, Kotlin 에서만 사용되는 개념 X
  • 자료구조를 편하게 다루기 위해 제공하는 라이브러리
  • 코틀린에서의 Collection 은 자체적으로 제공하는 Collection 이 아닌, 표준 Java Collection 을 활용
    • 그 이유로는 표준 Java Collection 을 활용함으로 자바 코드와 상호작용하기 더 쉽기 때문이라고 함!

🤔 List vs Array vs ArrayList

1. List

  • immutable 한 컬렉션 (MutableList 를 통해서 mutable한 리스트 사용 가능)
  • 순서가 있는 엘리먼트들의 집합
  • 읽기 전용
  • 배열 안 내용 수정 X
val list: List<Int> = listOf(1, 2, 3)
//list.add -> 에러
//list[0] = 0 // 에러(list.add와 같은 결과를 나타냄)
//list.set -> 에러

println(list) //출력값 : [1, 2, 3]

println(list[0]) //출력값 : 1

2. Array

  • mutable 한 컬렉션
  • 초기화 당시에 배열 크기 정해짐(== 배열의 크기 변경 불가능)
  • 포인터를 사용하여 값의 위치를 가리킴
val array: Array<Int> = arrayOf(1, 2, 3, 4, 5)

array.set(0, 6) //첫번째 데이터 값을 6으로 변경
array[0] = 6 //array.set(0, 6)과 같은 결과

println(array) //출력값 : [Ljava.lang.Integer;@330bedb4
// 엥 뭔가 이상해요 -> array는 배열의 참조 값이기에, 내용을 출력하기 위해서는

println(array.contentToString()) //출력값 : [6, 2, 3, 4, 5]

3. ArrayList

  • mutable 한 컬렉션
  • Array 와 다르게 배열 크기 또한 변경 가능
val arrayList: ArrayList<Int> = arrayListOf(1, 2, 3)

println(arrayList) //출력값 : [1, 2, 3]

arrayList.set(1, 5) //두번째 데이터 값을 5로 변경
arrayList[1] = 5 //arrayList.set(1, 5) 같은 결과

println(arrayList) //출력값 : [1, 5, 3]

arrayList.remove(5) //arrayList 내의 요소 중 "5" 제거

println(arrayList) //출력값 : [1, 3]

🧐 List vs Set vs Map

1. List

  • immutable 한 컬렉션 (MutableList 를 통해서 mutable한 리스트 사용 가능)
  • 순서가 있는 엘리먼트들의 집합
  • 시퀀스(Sequence) 라고도 부름
  • 읽기 전용
  • 배열 안 내용 수정 X
val list: List<Int> = listOf(1, 2, 3)
//list.add -> 에러
//list[0] = 0 // 에러(list.add와 같은 결과를 나타냄)
//list.set -> 에러

println(list) // 출력값 : [1, 2, 3]

println(list[0]) // 출력값 : 1

// -- MutableList 예시 --
var mutableList: MutableList<Int> = mutableListOf(1, 2, 3)

mutableList.add(4)
println(mutableList) // 출력값 : [1, 2, 3, 4]

mutableList[0] = 0
println(mutableList) // 출력값 : [0, 2, 3, 4]

mutableList.set(1, 1)
println(mutableList) // 출력값 : [0, 1, 3, 4]

mutableList = mutableList.apply {
	add(5)
	add(6)
}

println(mutableList) // 출력값 : [0, 1, 3, 4, 5, 6] 

2. Set

  • immutable 한 컬렉션 (MutableSet 을 통해서 mutable 한 집합 사용 가능)
  • Set순서가 없는 유일한 요소들의 집합으로, 중복된 요소를 허용X
  • Set은 인덱스를 가지지 않으며, 인덱스를 통한 요소 접근이 불가능
val set: Set<Int> = setOf(1, 2, 3)
println(set)// 출력값: [1, 2, 3]

// -- MutableSet 예시 --
val mutableSet: MutableSet<Int> = mutableSetOf(1, 2, 3)

mutableSet.add(4)
println(mutableSet) // 출력값 : [1, 2, 3, 4]

// 이미 존재하는 요소를 추가하려고 하면, 아무런 변화 X.
mutableSet.add(2)
println(mutableSet) // 출력값 : [1, 2, 3, 4]

// 요소 삭제
mutableSet.remove(1)
println(mutableSet) // 출력값 : [2, 3, 4]

3. Map

  • immutable 한 컬렉션 (MutableMap 을 통해서 mutable 한 map 사용 가능)
  • Map키-값 쌍의 집합, 각 키는 유일해야 하며 각 키는 하나의 값 가짐
val map: Map<String, Int> = mapOf("one" to 1, "two" to 2, "three" to 3)
println(map) // 출력값: {one=1, two=2, three=3}

// -- MutableMap 예시 --
val mutableMap: MutableMap<String, Int> = mutableMapOf("one" to 1, "two" to 2, "three" to 3)

mutableMap["four"] = 4
println(mutableMap) // 출력값 : {one=1, two=2, three=3, four=4}

// 이미 존재하는 키의 값을 변경
mutableMap["one"] = 10
println(mutableMap) // 출력값 : {one=10, two=2, three=3, four=4}

// 키-값 쌍 삭제
mutableMap.remove("two") //키 값을 이용해서 삭제함
println(mutableMap) // 출력값 : {one=10, three=3, four=4}

🤗 Collection Function 에는 무엇이 있을까?

📎 자주 사용할 만한 Collection Function 만 정리

1. filter

  • 특정 조건을 만족하는 요소만을 추출하여 새로운 컬렉션 생성
val num = listOf(1, 2, 3, 4, 5, 6, 7)
val evenNum = num.filter { it % 2 == 0 }

println(evenNum) // 출력값 : [2, 4, 6]

2. map

  • 각 요소에 특정 수식을 적용한 결과로만 추출하여 새로운 컬렉션 생성
val num = listOf(1, 2, 3)
val squaredNum = num.map { it * it }

println(squaredNum) // 출력값 : [1, 4, 9]

3. forEach

  • 컬렉션의 각 요소에 대해 특정 작업 수행
val num = listOf(1, 2, 3)
num.forEach { println(it) } 

//출력값 : 
// 1
// 2
// 3

4. any

  • 컬렉션의 요소 중 하나라도 조건 만족 시 true 반환
val num = listOf(1, 3)
println(num.any { it % 2 == 0 }) // 출력값 : false 반환

5. all

  • 컬렉션의 모든 요소가 조건 만족 시 true 반환
val num = listOf(2, 4, 6)
println(num.all { it % 2 == 0 }) // 출력값 : true 반환

6. none

  • 컬렉션의 모든 요소가 조건을 모두 만족하지 않을 시 true 반환
val num = listOf(2, 4, 6)
println(num.all { it % 2 != 0 }) // 출력값 : true 반환

📌 참고자료

Collections overview | Kotlin

[Kotlin] 컬렉션(Collection)

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

Kotlin - 컬렉션 함수 (Collection Functions)

profile
멍멍멍멍멍지 ~

0개의 댓글