Kotlin/포스팅

코틀린 컬렉션 순서

짜집퍼박사(짜박) 2024. 1. 1. 22:56

코틀린에서 컬렉션의 순서는 요소가 나타나는 순서를 말합니다. 여러 가지 컬렉션 유형이 있고, 각각의 컬렉션은 요소를 저장하고 반복할 때 특정한 순서를 따릅니다. 여기에서는 몇 가지 주요한 컬렉션과 해당 순서에 대해 설명하겠습니다.

 

1. List

순서 보장: List는 순서가 있는 컬렉션이며, 요소는 리스트에 추가된 순서대로 유지됩니다.

val list = listOf(1, 2, 3, 4, 5)
// list = [1, 2, 3, 4, 5]

 

2. Set

순서 미보장: Set은 순서가 없는 컬렉션으로, 요소의 순서가 보장되지 않습니다. 따라서 요소의 반복 순서는 항상 일정하지 않습니다.

val set = setOf(1, 2, 3, 4, 5)
// set = [1, 2, 3, 4, 5] 또는 [5, 4, 3, 2, 1]과 같이 나타날 수 있음

 

3. Map

순서 미보장: Map은 키-값 쌍의 집합으로, 키의 순서가 보장되지 않습니다. 하지만 Kotlin 1.6 이상에서는 LinkedHashMap이 기본적으로 사용되므로 키의 순서가 보장됩니다.

val map = mapOf("a" to 1, "b" to 2, "c" to 3)
// map = {a=1, b=2, c=3} 또는 {c=3, b=2, a=1}과 같이 나타날 수 있음

 

4. 순환 가능한 컬렉션 (Iterable)

순서 보장: 대부분의 컬렉션은 Iterable을 구현하며, 이는 컬렉션을 순회할 수 있는 기능을 제공합니다. Iterable에서 파생된 컬렉션들은 순서가 있는 것이 일반적입니다.

val list = listOf(1, 2, 3, 4, 5)
for (item in list) {
    // 순회할 때 요소의 순서는 보장됨
}

 

5. 순서 보장 여부 확인

List와 같이 순서가 보장되는 컬렉션인지 확인하려면 isOrdered 함수를 사용할 수 있습니다.

val isOrdered = list.isOrdered()
// 결과: isOrdered = true

이 함수는 Kotlin 표준 라이브러리에는 포함되어 있지 않으므로, 직접 정의해야 할 수도 있습니다. 아래는 간단한 예시입니다.

fun <T> Iterable<T>.isOrdered(): Boolean {
    val iterator = iterator()
    if (!iterator.hasNext()) return true

    var current = iterator.next()
    while (iterator.hasNext()) {
        val next = iterator.next()
        if (current > next) {
            return false
        }
        current = next
    }
    return true
}

이와 같이 다양한 컬렉션 유형이 있으며, 각각의 컬렉션은 요소의 순서에 대한 특징을 가지고 있습니다. 사용하고자 하는 데이터 및 요구사항에 따라 적절한 컬렉션을 선택하여 활용하면 됩니다.

 

With ChatGPT

'Kotlin > 포스팅' 카테고리의 다른 글

코틀린 스트림 유틸리티  (0) 2024.01.01
코틀린 파일과 I/O 스트림  (0) 2024.01.01
코틀린 하위 컬렉션 추출  (0) 2024.01.01
코틀린 컬렉션 변환  (0) 2024.01.01
코틀린 컬렉션 걸러내기  (0) 2024.01.01