1. Kotlin 이란?
: Kotlin은 JetBrains에서 개발한 정적 타입 프로그래밍 언어로, JVM 위에서 실행되며
Java와 100% 상호 운용이 가능. 간결하고 안전하며 현대적인 프로그래밍 패러다임을 지원하도록 설계
1.주요 특징
- 간결성
Kotlin은 불필요한 코드를 줄이고, 표현력을 높여 개발자의 생산성을 향상시킴 - 안전성
Kotlin은 널(null) 안전성을 내장하여 런타임 오류를 방지 - 함수형 프로그래밍 지원
람다 식, 고차 함수, 불변 컬렉션 등 함수형 프로그래밍 개념을 포함 - 상호 운용성
Kotlin은 기존 Java 코드, 라이브러리, 프레임워크와 원활하게 통합 가능
2. 활용분야
- Android 애플리케이션 개발
- 서버 사이드 애플리케이션
- 데스크톱 및 웹 애플리케이션
자세한 내용은 Kotlin 공식 문서(https://kotlinlang.org/docs/home.html)를 참고하세요.
2. Kotlin자료구조
1. Array
: 고정 크기의 동일 타입 데이터를 연속적으로 저장하는 자료구조
val strings: Array<String> = arrayOf("Apple", "Banana", "Cherry")
val booleans: Array<Boolean> = arrayOf(true, false, true)
2. List (ArrayList 기반)
1) Immutable List (읽기 전용)
: 변경할 수 없는 리스트입니다. 요소를 추가하거나 제거할 수 없음
val list = listOf("Apple", "Banana", "Cherry")
println(list[0]) // Apple
2) Mutable List (수정 가능)
: 요소를 추가하거나 제거할 수 있는 리스트
val mutableList = mutableListOf("Apple", "Banana")
mutableList.add("Cherry")
println(mutableList) // [Apple, Banana, Cherry]
- ArrayList: 자바의 ArrayList를 사용 가능 (일반적으로 mutableListOf와 거의 동일하게 사용)
- List<Int>, List<String> 등 제네릭 타입으로 사용 가능
- emptyList(), listOfNotNull() 같은 유틸 함수도 제공
3. Map
: Map은 키(key) - 값(value) 쌍으로 데이터를 저장하는 자료구조
(각 키는 유일해야 하며, 키를 통해 빠르게 값을 찾을 수 있음)
fun main() {
val map = mapOf("apple" to 1, "banana" to 2) // 읽기 전용 Map
val mutableMap = mutableMapOf("apple" to 1)
mutableMap["banana"] = 2 // 요소 추가
mutableMap["apple"] = 3 // 값 변경
println(mutableMap["apple"]) // 3
println("키 목록: ${mutableMap.keys}") // [apple, banana]
println("값 목록: ${mutableMap.values}") // [3, 2]
}
4. Set
: Set은 중복을 허용하지 않는 컬렉션
(요소의 순서 보장이 없으며, (LinkedHashSet 제외) 빠르게 포함 여부를 확인할 수 있음.)
fun main() {
val set = setOf("A", "B", "A") // 읽기 전용, 중복 제거됨 → ["A", "B"]
val mutableSet = mutableSetOf("X", "Y")
mutableSet.add("Z")
mutableSet.add("X") // 이미 있으므로 추가 안 됨
println(mutableSet) // [X, Y, Z]
println("Y 포함됨? ${mutableSet.contains("Y")}") // true
}
5. Stack
: Stack은 후입선출(LIFO) 방식의 자료구조 (나중에 넣은 데이터가 먼저 나옴)
(Kotlin에는 Stack이 기본적으로 없으므로, ArrayDeque를 스택처럼 사용)
import java.util.ArrayDeque
fun main() {
val stack = ArrayDeque<String>()
stack.addLast("A") // push
stack.addLast("B")
stack.addLast("C")
println(stack.removeLast()) // pop → C
println(stack.removeLast()) // B
println("stack: $stack") // [A]
}
6. Queue
: Queue는 선입선출(FIFO) 구조(먼저 들어온 요소가 먼저 나가는 구조)
(Kotlin에서는 Java의 ArrayDeque를 사용)
import java.util.ArrayDeque
fun main() {
val queue = ArrayDeque<String>()
queue.addLast("A")
queue.addLast("B")
queue.addLast("C")
println(queue.removeFirst()) // queue → A
println("queue: $queue") // [B, C]
}
7. Tree
: Tree는 계층적인 구조를 가진 비선형 자료구조
(최상위 노드를 루트(root) 라고 하며, 각 노드는 0개 이상의 자식 노드를 가질 수 있으며,
Kotlin 표준 라이브러리에는 트리가 없기 때문에, 직접 구현해야 함)
class TreeNode(val value: Int) {
var left: TreeNode? = null
var right: TreeNode? = null
fun insert(newValue: Int) {
if (newValue < value) {
if (left == null) left = TreeNode(newValue)
else left?.insert(newValue)
} else {
if (right == null) right = TreeNode(newValue)
else right?.insert(newValue)
}
}
fun inOrderTraversal() {
left?.inOrderTraversal()
print("$value ")
right?.inOrderTraversal()
}
}
fun main() {
val root = TreeNode(10)
root.insert(5)
root.insert(15)
root.insert(3)
root.insert(7)
print("order 순회: ")
root.inOrderTraversal() // 출력: 3 5 7 10 15
}
'Kotlin Spring > Kotlin Spring 강의 내용' 카테고리의 다른 글
4) Spring @controller, @service, @repository (0) | 2025.08.29 |
---|---|
3) Spring 컨테이너, Bean (0) | 2025.08.26 |
2) Spring Boot란? (맛보기) (0) | 2025.08.25 |
1. (2) Kotlin 주요 문법 (0) | 2025.08.25 |
0. [과정을 들어가면서] 과정소개 (1) | 2025.08.24 |