배열(Arrays)
- 배열은 같은 유형의 여러 요소를 순차적으로 저장하는 자료 구조이다.
- 배열은 고정된 크기를 가진다.
- 각 요소는 인덱스를 사용하여 접근할 수 있다.
val arr1 = ArrayOf(1,2,3)
var array = Array(3, { Array(4, {0}) })
리스트(Lists)
- 순서가 있는 요소들의 컬렉션을 나타낸다.
- 코틀린에서는 List 와 MutableList 인터페이스를 제공한다.
- mutableListOf 함수로 변경 가능한 리스트를 생성할 수 있다.
val names: List<String> = listOf("Alice", "Bob", "Charlie")
val mutableNames: MutableList<String> = mutableListOf("Alice", "Bob", "Charlie")
맵(Maps)
- 키-값 쌍의 컬렉션을 나타낸다.
- 각 키는 고유해야 하며, 존재하지 않는 키로 값에 접근하려고 하면 null을 반환한다.
val ages: Map<String, Int> = mapOf("Alice" to 25, "Bob" to 30, "Charlie" to 35)
스택(Stack)
- 목록의 끝에서만 접근 할 수 있는 제한적인 자료구조
- LIFO (Last In First Out) : 마지막에 들어온 데이터가 가장 먼저 나간다.
val stack = Stack<Int>()
stack.push(3)
stack.push(4)
println(stack.pop())
큐(Queue)
- LIFO형태를 가지는 스택과 반대되는 개념
- FIFO (First In First Out) : 처음에 들어온 데이터가 가장 먼저 나감
val que = LinkedList<Int>()
que.offer(3)
que.poll()
que.peek()
덱/디큐(Double Ended Queue)
- 양쪽에서 모두 삽입, 삭제가 가능한 자료구조 형태
- Stack, Queue 처럼 사용할 수 있으며 두 개의 형태를 모두 띄는 자료구조이다.
val deque = ArrayDeque<Int>()
deque.addFirst(0)
deque.addLast(3)
deque.add(1)
deque.first
deque.peekFirst()
deque.peek()
deque.last
deque.peekLast()
deque.removeFirst()
deque.pollFirst()
deque.remove()
deque.poll()
deque.removeLast()
deque.pollLast()
deque.clear()