Kotlin 자료구조

박재원·2023년 12월 12일
0

TIL

목록 보기
11/50
post-thumbnail

배열(Arrays)

  • 배열은 같은 유형의 여러 요소를 순차적으로 저장하는 자료 구조이다.
  • 배열은 고정된 크기를 가진다.
  • 각 요소는 인덱스를 사용하여 접근할 수 있다.
val arr1 = ArrayOf(1,2,3) 
var array = Array(3, { Array(4, {0}) }) // 3 x 4 배열

리스트(Lists)

  • 순서가 있는 요소들의 컬렉션을 나타낸다.
  • 코틀린에서는 ListMutableList 인터페이스를 제공한다.
  • 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>()

// 값 추가 (push)
stack.push(3)
stack.push(4)

// 값 추출 (pop), LIFO 구조를 가지므로 가장 마지막에 들어온 4가 pop 된다.
println(stack.pop()) // 4

큐(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) // == addLast()

  deque.first
  deque.peekFirst()
  deque.peek() // 첫 번째 원소 가져옴

  deque.last
  deque.peekLast() // 마지막 원소 가져옴

  deque.removeFirst()
  deque.pollFirst() // 첫 번째 원소 삭제하고 값 리턴
  
  deque.remove()
  deque.poll() // 위와 동일

  deque.removeLast()
  deque.pollLast() // 마지막 원소 삭제하고 값 리턴

  deque.clear() // 모두 삭제

0개의 댓글