Kotlin

[Kotlin] 코틀린 자료 구조와 Java와의 관계

yujinius 2024. 7. 5. 23:52

Kotlin에서는 다양한 자료구조를 사용할 수 있으며, Java의 표준 라이브러리를 사용하여 구현할 수 있습니다. Kotlin 자체에는 기본적인 자료구조가 포함되어 있지만, 더 복잡한 자료구조는 Java의 클래스를 활용해야 합니다. 아래에 Kotlin에서 사용할 수 있는 주요 자료구조를 정리했습니다.

1. List (리스트)

  • List (읽기 전용 리스트)
  • MutableList (변경 가능한 리스트)
kotlin코드 복사
val list = listOf(1, 2, 3)  // 읽기 전용 리스트
val mutableList = mutableListOf(1, 2, 3)  // 변경 가능한 리스트

2. Set (집합)

  • Set (읽기 전용 집합)
  • MutableSet (변경 가능한 집합)
kotlin코드 복사
val set = setOf(1, 2, 3)  // 읽기 전용 집합
val mutableSet = mutableSetOf(1, 2, 3)  // 변경 가능한 집합

3. Map (맵)

  • Map (읽기 전용 맵)
  • MutableMap (변경 가능한 맵)
kotlin코드 복사
val map = mapOf(1 to "a", 2 to "b")  // 읽기 전용 맵
val mutableMap = mutableMapOf(1 to "a", 2 to "b")  // 변경 가능한 맵

4. Queue (큐)

  • Queue 인터페이스는 Java의 java.util.Queue를 사용하여 구현합니다.
kotlin코드 복사
import java.util.LinkedList
import java.util.Queue

val queue: Queue<Int> = LinkedList()
queue.add(1)
queue.add(2)
queue.add(3)
println(queue.poll())  // 1

5. Deque (덱)

  • Deque 인터페이스는 Java의 java.util.Deque를 사용하여 구현합니다.
kotlin코드 복사
import java.util.ArrayDeque
import java.util.Deque

val deque: Deque<Int> = ArrayDeque()
deque.addFirst(1)
deque.addLast(2)
deque.addLast(3)
println(deque.removeFirst())  // 1

6. Stack (스택)

  • Stack 클래스는 Java의 java.util.Stack을 사용하여 구현합니다. 그러나 Kotlin에서는 ArrayDeque를 스택으로 사용하는 것이 더 권장됩니다.
kotlin코드 복사
import java.util.Stack

val stack = Stack<Int>()
stack.push(1)
stack.push(2)
stack.push(3)
println(stack.pop())  // 3

// 또는 ArrayDeque를 스택으로 사용
val stackDeque = ArrayDeque<Int>()
stackDeque.push(1)
stackDeque.push(2)
stackDeque.push(3)
println(stackDeque.pop())  // 3

7. PriorityQueue (우선순위 큐, 힙)

  • PriorityQueue 클래스는 Java의 java.util.PriorityQueue를 사용하여 구현합니다.
kotlin코드 복사
import java.util.PriorityQueue

val priorityQueue = PriorityQueue<Int>()
priorityQueue.add(3)
priorityQueue.add(1)
priorityQueue.add(2)
println(priorityQueue.poll())  // 1

8. Linked List (연결 리스트)

  • LinkedList 클래스는 Java의 java.util.LinkedList를 사용하여 구현합니다.
kotlin코드 복사
import java.util.LinkedList

val linkedList = LinkedList<Int>()
linkedList.add(1)
linkedList.add(2)
linkedList.add(3)
println(linkedList.removeFirst())  // 1

이 외에도 Kotlin은 다양한 컬렉션 함수와 라이브러리를 제공하여 데이터 구조를 더 쉽게 조작할 수 있도록 돕습니다. 위의 자료구조들은 대부분 Java 라이브러리를 활용하여 구현되므로, Java의 자료구조 사용 방법에 익숙하다면 Kotlin에서도 쉽게 사용할 수 있습니다.