Kotlin CheatSheet

코틀린 치트시트

Summary

Lec 00. 코틀린 34가지 사실

  • 간결성, null safety, 함수형, 자바 100% 호환

  • ?., ?:, 스마트 캐스트, 데이터 클래스 등 핵심 기능


Lec 01. 변수

  • val (불변), var (가변)

  • 타입 추론 지원


Lec 02. Null

  • ?: nullable 타입

  • ?.: safe call

  • ?:: elvis 연산자

  • !!: 강제 not-null


Lec 03. Type

  • 모든 타입은 객체, JVM 최적화 시 primitive 변환

  • 특별한 타입: Any, Unit, Nothing

  • 스마트 캐스트(is → 자동 변환)


Lec 04. 연산자

  • ==: 값 비교 / ===: 참조 비교

  • in, !in: 포함 여부

  • .., until, downTo, step: 범위 연산자


Lec 05. 조건문

  • if는 표현식

  • when: switch 대체, 값/타입/범위 검사 가능


Lec 06. 반복문

  • for (i in 0 until n)

  • withIndex() → 인덱스 + 값

  • while, do-while 자바와 동일


Lec 07. 예외

  • Checked Exception 없음 → throws 불필요

  • try/catch/finally는 표현식

  • 함수형 스타일: runCatching, Result<T>


Lec 08. 함수

  • fun add(a: Int, b: Int) = a + b

  • 기본값, named parameter, vararg 지원

  • 최상위 함수 가능 → static 대체


Lec 09. 클래스

  • class User(val id: Int, var name: String)

  • init 블록으로 초기화 로직

  • getter/setter 자동 생성, 필요 시 커스터마이즈 가능


Lec 10. 상속

  • 기본적으로 final, 상속하려면 open

  • abstract, interface 지원

  • override 필수


Lec 11. 접근 제어

  • public (기본), private, protected, internal

  • getter/setter에 다른 접근 제어 가능

  • internal: 모듈 경계 단위 제어


Lec 12. object

  • object → 싱글톤

  • companion object → static 대체

  • object : 인터페이스 {} → 익명 객체


Lec 13. 중첩 클래스

  • class Nested: static nested

  • inner class Inner: 외부 참조 가능 (this@Outer)


Lec 14. 다양한 클래스

  • data class: equals, hashCode, toString, copy 자동 생성

  • enum class: 상수 집합

  • sealed class: 제한된 클래스 계층 → when과 함께 exhaustiveness 체크


Lec 15. 배열과 컬렉션

  • 배열: arrayOf, intArrayOf

  • 컬렉션: listOf(불변), mutableListOf(가변)

  • 함수형 API: map, filter, reduce


Lec 16. 고급 함수 문법

  • infix: DSL 스타일 중위 호출

  • inline: 성능 최적화, 람다 인라인 처리

  • 지역 함수(local function): 함수 내부에 함수 정의


Lec 17. 람다

  • { 파라미터 -> 본문 }

  • 마지막 파라미터는 트레일링 람다 가능

  • 클로저 지원 (non-final 변수 사용 가능)


Lec 18. 컬렉션 함수형 처리

  • filter, map, mapNotNull

  • 조건: all, any, none

  • 집계/정렬: count, sortedBy, distinctBy

  • 변환: groupBy, associateBy, flatMap, flatten


Lec 19. 이모저모

  • typealias: 타입 별칭

  • as import: import 충돌 방지

  • 구조분해 선언: (a, b) = pair

  • takeIf, takeUnless: 조건부 반환

  • Jump+Label: return@label, break@label (지양)


Lec 20. Scope Function

  • let: null-safe, 결과 반환 (it)

  • run: 초기화 + 결과 반환 (this)

  • apply: 설정, 객체 반환 (this)

  • also: 부수 효과, 객체 반환 (it)

  • with: 컨텍스트 실행 (this)

변수

개요

  • val: 불변(immutable), 재할당 불가 (Java의 final에 해당)

  • var: 가변(mutable), 재할당 가능

  • 타입 추론 지원: 명시하지 않아도 컴파일러가 타입을 결정


예시1 (기본 문법)

(1) Java → Kotlin 전환

// Java
int count = 10;
final String greeting = "Hello";
// Kotlin
var count = 10        // 가변
val greeting = "Hello" // 불변

(2) 타입 추론


예시2 (실무 활용)

(1) 서버 설정값 정의

MAX_RETRY는 상수, currentRetry는 실행 중 변경되는 값.

(2) Spring Boot 환경설정

→ 설정값은 val로 불변, 실행 중 수집되는 통계는 var로 관리.


Null

개요

  • 코틀린은 Null Safety를 언어 차원에서 제공

  • ? : nullable 타입

  • ?. : Safe call

  • ?: : Elvis 연산자

  • !! : Not-null 단언 (주의 필요, 실무에서는 최소화)


예시1 (기본 문법)

(1) Java → Kotlin 전환


(2) 안전하지 않은 코드 vs 안전한 코드


예시2 (실무 활용)

(1) DB 조회 결과 처리

→ DB에서 유저가 없을 경우 Guest 반환.


(2) API 요청 파라미터 처리

→ 필수 값은 ?: throw, 선택 값은 기본값으로 처리.

Type

개요

  • 코틀린은 **기본 타입도 객체(Reference Type)**로 다룸

  • 컴파일러가 최적화 시 JVM의 primitive로 변환 (성능 동일)

  • 스마트 캐스트(smart cast) 지원 → is로 타입 검사 후 안전하게 변환

  • Any (최상위 타입), Unit (Java의 void), Nothing (절대 리턴 불가 타입) 존재


예시1 (기본 문법)

(1) Java Primitive vs Kotlin


(2) 스마트 캐스트


예시2 (실무 활용)

(1) API 응답 처리

→ JSON 파싱, DB 결과 변환 등에서 다양한 타입을 안전하게 처리 가능.


(2) Nothing 타입 활용

Nothing은 함수가 정상적으로 리턴하지 않음을 표현 → null-safe 코드 작성 가능.

연산자

개요

  • 코틀린의 연산자는 사실상 함수 호출로 해석됨 (a + ba.plus(b))

  • == vs ===: 값 비교와 참조 비교 구분

  • is, !is: 타입 검사

  • in, !in: 포함 여부 검사

  • 범위 연산자: .., until, downTo, step

  • if/when도 표현식(Expression) 으로 값 할당 가능


예시1 (기본 문법)

(1) 값 비교 vs 참조 비교


(2) 범위 연산자


예시2 (실무 활용)

(1) 권한 검사

→ API 보안 로직에서 값 비교(==) 활용.


(2) 리스트 필터링

→ 서버에서 특정 값이 컬렉션에 포함되는지 in으로 직관적으로 확인.

조건문

개요

  • if는 문(statement)뿐 아니라 표현식(expression) → 값 할당 가능

  • when은 자바의 switch를 확장한 문법

    • 값 매칭, 타입 검사, 범위 검사, 여러 조건 지원

    • else는 default와 동일한 역할

  • 실무에서는 권한 처리, 입력 검증, 상태 전이 로직에 자주 활용


예시1 (기본 문법)

(1) if 표현식


(2) switch vs when


예시2 (실무 활용)

(1) API 권한 처리

→ API 보안 로직에서 enum 기반 권한 분기.


(2) 요청 파라미터 검증

→ 서버 입력값 검증 로직에서 범위 조건 활용.

반복문

핵심 요약

  • for (i in 0 until n) → 범위 기반 반복

  • for (item in list) → Iterable 반복

  • withIndex() → 인덱스 + 값 동시 사용

  • while, do-while → 자바와 동일

  • 실무: 배치, 로그 출력, 컬렉션 처리에서 활용


예시1 (기본 문법)

(1) Java for vs Kotlin for-in


(2) 리스트 순회


예시2 (실무 활용)

(1) 인덱스와 값 동시 사용

→ 서버 로그 출력 시 유용.


(2) 데이터 처리 로직

→ 배치 작업에서 주문 만료 처리 로직.

예외

개요

  • 코틀린은 Checked Exception 없음 → 모든 예외는 Unchecked

  • try/catch/finally 문법은 자바와 동일, 하지만 표현식으로도 사용 가능

  • 함수형 스타일로 runCatching, Result 타입 자주 활용

  • 사용자 정의 예외는 RuntimeException 상속

핵심 요약

  • Checked Exception 없음 → throws 불필요

  • try/catch/finally는 표현식으로도 사용 가능

  • 함수형 스타일: runCatching, Result<T>

  • 실무 활용: API 응답 Wrapping, 트랜잭션 처리


1. Checked Exception 없음

기본 문법 예시

실무 활용 예시


2. try/catch/finally (표현식)

기본 문법 예시

실무 활용 예시


3. runCatching

기본 문법 예시

실무 활용 예시


4. Result<T>

기본 문법 예시

실무 활용 예시


5. 사용자 정의 예외 (RuntimeException 상속)

기본 문법 예시

실무 활용 예시

함수

개요

  • fun 키워드로 함수 선언

  • 반환 타입은 : Type, 추론 가능 시 생략

  • 블록 본문 vs 식(Expression) 본문 (= 사용)

  • 기본값 파라미터, 이름 붙은 인자, 가변 인자 지원

  • 최상위 함수 가능 (클래스 밖 함수)

  • 자바의 static 유틸 메소드보다 간결

핵심 요약

  • fun name(param: Type): Return

  • 블록 본문 {} vs 식 본문 =

  • 기본값 파라미터 + 이름 붙은 인자 → 오버로딩 대체

  • 최상위 함수 지원 → 유틸/헬퍼 함수 작성 용이

  • 실무 활용: 컨트롤러 파라미터 처리, 유틸 메소드, DTO 변환 등


예시1 (기본 문법)

(1) Java → Kotlin 변환


(2) 기본값 + 이름 붙은 인자


예시2 (실무 활용)

(1) Spring Boot Controller

→ 기본값 파라미터로 오버로딩 줄이고 코드 간결화.


(2) 유틸 함수 (최상위 함수)

→ 자바처럼 static 유틸 클래스 필요 없음, 최상위 함수로 해결.

클래스

개요 & 핵심 요약

  • class 키워드로 클래스 선언

  • 생성자: 주 생성자(primary) + 보조 생성자(secondary)

  • 프로퍼티(Property): val (읽기 전용), var (읽기/쓰기)

  • 기본 접근 제어자는 public

  • init 블록으로 초기화 로직 실행

  • getter/setter는 자동 생성되며, 필요 시 오버라이딩 가능

  • 핵심 요약

    • class User(val id: Int, var name: String) → 프로퍼티 + 생성자 한 줄로

    • init 블록 → 생성 시 로직 실행

    • val 불변, var 가변

    • 자바보다 보일러플레이트가 대폭 감소


예시1 (기본 문법)

(1) Java → Kotlin 전환


(2) init 블록

→ 객체 생성 시 검증 로직 수행.


예시2 (실무 활용)

(1) JPA Entity 정의

→ 불변 id + 가변 필드 조합으로 DB 엔티티 표현.


(2) DTO 클래스 정의

→ Entity와 API 응답 DTO를 구분해서 사용하는 패턴.

상속

개요 & 핵심 요약

  • 코틀린 클래스는 기본적으로 final → 상속 불가

  • 상속을 허용하려면 open 키워드 필요

  • 메소드 오버라이드는 override 키워드 필수

  • 추상 클래스(abstract)는 인스턴스화 불가, 하위 클래스에서 구현 강제

  • 인터페이스도 구현 가능하며, default 구현 지원

  • 핵심 요약

    • open class → 상속 가능

    • abstract class → 미구현 메소드 강제

    • interface → 다중 구현 가능, 디폴트 메소드 지원

    • 오버라이드 시 override 반드시 명시


1️⃣ open

🔹 기본 문법 예시

(1) 클래스 상속 허용

(2) 메서드 재정의 허용

🔹 실무 활용 예시

(1) 확장 가능한 서비스 클래스

(2) 테스트에서 Mocking 용이


2️⃣ abstract

🔹 기본 문법 예시

(1) 추상 클래스

(2) 추상 메서드 + 구현 메서드 혼합

🔹 실무 활용 예시

(1) 서비스 템플릿

(2) UI 컴포넌트 추상화


3️⃣ interface

🔹 기본 문법 예시

(1) 단순 인터페이스

(2) default 메서드 제공

🔹 실무 활용 예시

(1) 전략 패턴

(2) Enum + 인터페이스 조합


4️⃣ override

🔹 기본 문법 예시

(1) 메서드 오버라이드

(2) 프로퍼티 오버라이드

🔹 실무 활용 예시

(1) JPA Entity 재정의

(2) 스프링 시큐리티 UserDetails 구현

접근 제어

개요 & 핵심 요약

  • 코틀린 접근 제어자: public, private, protected, internal

  • 기본값은 public (Java의 default와 다름)

  • protected: 상속 관계에서만 접근 가능 (Java처럼 패키지 단위 X)

  • internal: 같은 모듈(module) 내에서만 접근 가능

  • 파일 최상위 함수/프로퍼티에도 접근 제어자 사용 가능

  • 프로퍼티 getter/setter에 서로 다른 접근 제어자 부여 가능

  • 핵심 요약

    • 기본은 public

    • internal: 모듈 경계 제어

    • protected: 패키지 무시, 상속만 허용

    • getter/setter 가시성 다르게 설정 가능


예시1 (기본 문법)

(1) Java vs Kotlin 기본값 차이


(2) 프로퍼티 가시성 제어


예시2 (실무 활용)

(1) 모듈 경계 제어 (internal)

→ 다른 모듈에서 접근 불가, 라이브러리 내부 구현 숨김.


(2) 생성자 제어

→ 팩토리 메소드 패턴, 외부에서 직접 생성 제한.

object 키워드

개요 & 핵심 요약

  • object 키워드는 세 가지 주요 용도

    1. 싱글톤 객체 선언: 클래스 정의 + 인스턴스 생성 동시에 수행

    2. companion object: 클래스와 함께 존재하는 유일 객체, Java의 static 대체

    3. 익명 객체(Anonymous object): 일회성 구현체 생성

  • 멀티스레드 환경에서도 안전하게 초기화됨

  • 핵심 요약

    • object → 싱글톤

    • companion object → static 대체, 팩토리/유틸리티 메소드 제공

    • object : 인터페이스 {} → 익명 객체


예시1 (기본 문법)

(1) 싱글톤 객체


(2) companion object


예시2 (실무 활용)

(1) Repository 싱글톤

→ 간단한 캐싱/저장소 패턴 구현.


(2) Spring Bean Factory 메소드

→ companion object로 환경 변수 기반 Factory 메소드 제공.

중첩 클래스

개요 & 핵심 요약

  • 코틀린에서 클래스 내부에 선언된 클래스는 기본적으로 static nested class처럼 동작 (외부 클래스 참조 X)

  • 바깥 클래스 참조가 필요할 경우 inner 키워드 명시 → 바깥 인스턴스에 접근 가능

  • 바깥 클래스 참조는 this@Outer 문법 사용

  • 자바는 기본이 non-static inner class, 코틀린은 반대 (안전성이 우선)

  • 핵심 요약

    • class Nested → static nested class

    • inner class Inner → 외부 클래스 참조

    • 외부 참조 문법: this@Outer

    • 기본적으로 static nested → 메모리 누수 방지


예시1 (기본 문법)

(1) Java vs Kotlin 기본 차이


(2) 외부 참조 접근


예시2 (실무 활용)

(1) Helper 클래스 (Nested)

→ 외부 상태 필요 없음 → Nested class로 안전하게 설계.


(2) Validator (Inner)

→ Order의 상태(items)를 참조해야 하므로 inner class로 구현.

다양한 클래스 (Data, Enum, Sealed)

개요 & 핵심 요약

  • Data class

    • data 키워드 → equals, hashCode, toString, copy, componentN 자동 생성

    • 주로 DTO, 값 객체(Value Object)에 사용

  • Enum class

    • 제한된 상수 집합 표현

    • 각 상수에 필드/메소드 정의 가능

  • Sealed class

    • 제한된 클래스 계층

    • when과 함께 사용 시 컴파일러가 모든 경우 체크

    • 상태(State)와 결과(Result) 표현에 적합

  • 핵심 요약

    • Data → DTO/VO, 불변 객체

    • Enum → 권한, 상태, 타입 구분

    • Sealed → API 응답, 상태 전이, 오류 처리


📌 Data Class

🔹 기본 문법 예시

(1) DTO 정의

(2) copy & toString


🔹 실무 활용 예시

(1) 엔티티 → DTO 변환

→ 컨트롤러에서 Entity → DTO 변환을 간결하게 처리.

(2) API 요청/응답 직렬화

→ REST API 요청/응답 모델을 직렬화/역직렬화에 활용.


📌 Enum Class

🔹 기본 문법 예시

(1) 상수 집합

(2) 값 포함


🔹 실무 활용 예시

(1) 권한 체크

(2) 주문 상태 관리


📌 Sealed Class

🔹 기본 문법 예시

(1) 결과 표현

(2) 상태 표현


🔹 실무 활용 예시

(1) API 응답 Wrapping

(2) UI 상태 전이

배열과 컬렉션

개요 & 핵심 요약

  • 배열: arrayOf, intArrayOf, Array(size) { init } 등으로 생성

  • 하지만 코틀린에서는 배열보다 컬렉션(List, Set, Map) 사용이 권장됨

  • 컬렉션은 불변(immutable)가변(mutable) 버전이 구분됨

  • 함수형 API (filter, map, reduce, sortedBy 등) 제공

  • 핵심 요약

    • 배열보단 컬렉션 활용

    • 불변: listOf, setOf, mapOf

    • 가변: mutableListOf, mutableSetOf, mutableMapOf

    • 컬렉션 처리 → 함수형 API 적극 활용


예시1 (기본 문법)

(1) 배열 생성


(2) 불변/가변 컬렉션


예시2 (실무 활용)

(1) DTO 변환

→ DB 조회 결과를 API DTO 리스트로 변환.


(2) 캐싱된 데이터 필터링

→ 만료되지 않은 토큰만 남기기.

고급 함수 문법 (infix, inline, local function)

개요 & 핵심 요약

  • infix 함수

    • 중위 호출 지원 → a to b 처럼 더 읽기 좋은 DSL 스타일 문법

    • 조건: 멤버 함수/확장 함수, 단일 파라미터만 허용

  • inline 함수

    • 함수 호출 대신 함수 본문을 호출 지점에 삽입 → 람다 객체 생성/호출 오버헤드 제거

    • 고차 함수 성능 최적화에 사용

  • 지역 함수(local function)

    • 함수 내부에 함수 정의 가능

    • 중복 제거 및 캡슐화 강화, 외부로 노출 방지

  • 핵심 요약

    • infix → DSL/가독성

    • inline → 성능 최적화

    • local function → 코드 중복 제거 + 스코프 제한


📌 Infix 함수

  • 중위 호출 지원a to b 처럼 DSL 스타일 문법 가능

  • 조건: 멤버 함수/확장 함수여야 하고, 단일 파라미터만 허용

🔹 기본 문법 예시

(1) Int 확장

(2) Pair 생성기


🔹 실무 활용 예시

(1) DSL 스타일 API (권한 체크)

(2) 컬렉션 빌더 DSL


📌 Inline 함수

  • 함수 호출 대신 본문을 호출 지점에 삽입

  • 람다 객체 생성/호출 오버헤드 제거 → 고차 함수 성능 최적화

🔹 기본 문법 예시

(1) 실행 시간 측정

(2) repeat 실행


🔹 실무 활용 예시

(1) 안전 실행 블록

(2) 트랜잭션 처리


📌 Local Function

  • 함수 내부에 함수 정의 가능

  • 중복 제거 및 캡슐화 강화, 외부로 노출되지 않음

🔹 기본 문법 예시

(1) 간단한 중복 제거

(2) 내부 전용 유틸


🔹 실무 활용 예시

(1) 검증 로직 캡슐화

(2) 파싱 로직 분리

람다

개요 & 핵심 요약

  • 람다(lambda): 함수 자체를 값처럼 다루는 문법 ({ 파라미터 -> 본문 })

  • 함수 타입: (매개변수 타입, ...) -> 반환 타입

  • 마지막 파라미터가 함수라면, 소괄호 밖에 작성 가능 (트레일링 람다)

  • 클로저(closure): 외부 변수를 캡처 가능 (자바와 달리 final 필요 없음)

  • 핵심 요약

    • val f: (Int) -> Int = { x -> x * 2 }

    • list.forEach { println(it) }

    • runCatching { ... } 처럼 함수형 스타일 활용

    • 실무에서는 컬렉션 처리, 고차 함수, DSL에 자주 쓰임


예시1 (기본 문법 전/후)

(1) Java Stream vs Kotlin 람다


(2) 클로저 활용


예시2 (실무 활용)

(1) 공통 로직 유틸

→ 고차 함수로 성능 로깅을 간결하게 처리.


(2) DSL 스타일 API

→ Ktor 같은 서버 프레임워크에서 라우팅 DSL을 직관적으로 정의.

컬렉션을 함수형으로

개요 & 핵심 요약

  • 코틀린 컬렉션은 함수형 스타일 API를 기본 지원

  • filter, map, reduce, groupBy, flatMap 등 풍부한 연산 제공

  • null-safe 버전(mapNotNull, firstOrNull)도 함께 제공

  • 컬렉션 조합으로 데이터 변환, 집계, 필터링, 매핑을 간단히 처리 가능

  • 핵심 요약

    • 필터링: filter, filterIndexed

    • 매핑: map, mapIndexed, mapNotNull

    • 조건: all, any, none

    • 집계/정렬: count, sortedBy, distinctBy

    • 변환: groupBy, associateBy, flatMap, flatten


🔹 필터링


1. filter

기본 문법

실무 활용


2. filterIndexed

기본 문법

실무 활용


🔹 매핑


3. map

기본 문법

실무 활용


4. mapIndexed

기본 문법

실무 활용


5. mapNotNull

기본 문법

실무 활용


🔹 조건


6. all

기본 문법

실무 활용


7. any

기본 문법

실무 활용


8. none

기본 문법

실무 활용


🔹 집계/정렬


9. count

기본 문법

실무 활용


10. sortedBy

기본 문법

실무 활용


11. distinctBy

기본 문법

실무 활용


🔹 변환


12. groupBy

기본 문법

실무 활용


13. associateBy

기본 문법

실무 활용


14. flatMap

기본 문법

실무 활용


15. flatten

기본 문법

실무 활용

이모저모

개요 & 핵심 요약

  • typealias: 타입에 별칭(alias)을 붙여 코드 가독성 향상자바 개발자를 위한 코틀린 …

  • as import: import 시 이름 변경 가능 → 충돌 방지자바 개발자를 위한 코틀린 …

  • 구조분해 선언: componentN 함수를 기반으로 객체를 여러 변수로 분해PPT

  • Jump와 Label: return, break, continue를 라벨과 함께 사용 가능 (권장X)PPT

  • takeIf / takeUnless: 조건 만족 여부에 따라 객체를 반환하거나 null 반환 → 메서드 체이닝 가능PPT

  • 핵심 요약

    • typealias: 복잡한 제네릭 단순화

    • as import: 동일 클래스명 충돌 해결

    • 구조분해: DTO/Pair/Triple 분해

    • Jump+Label: break/continue 확장 (지양)

    • takeIf/takeUnless: 조건부 반환으로 코드 간결화


예시1 (기본 문법 전/후)

(1) typealias & as import


(2) 구조분해 선언


예시2 (실무 활용)

(1) 조건부 실행 (takeIf)

→ 유효성 검증을 한 줄로 처리.


(2) Map 처리 with destructuring

→ 설정값을 구조분해로 직관적으로 순회.

Scope Function

개요 & 핵심 요약

  • Scope Function: 객체에 대해 **일시적인 영역(scope)**을 만들어 코드를 간결하게 하거나 메서드 체이닝에 활용자바 개발자를 위한 코틀린 …

  • 종류: let, run, also, apply, with자바 개발자를 위한 코틀린 …

  • 구분 기준:

    • 결과 반환: let, run → 람다 결과 반환

    • 객체 반환: also, apply, with

    • 람다 내부 접근: it (let/also), this (run/apply/with)PPT

  • 핵심 요약

    • let: null-safe 호출, 임시 변수 활용

    • run: 객체 초기화 + 반환 값 계산

    • apply: 객체 설정(빌더 스타일)

    • also: 부수효과(side-effect) 로깅, 디버깅

    • with: 객체 컨텍스트에서 여러 연산 수행


1) let

기본 문법 예시

실무 활용 예시


2) run

기본 문법 예시

실무 활용 예시


3) apply

기본 문법 예시

실무 활용 예시


4) also

기본 문법 예시

실무 활용 예시


5) with

기본 문법 예시

실무 활용 예시

배열

  • Array<Array<T>>

    • 크기가 고정됨.

    • 자바와의 호환성 필요할 때 유리.

    • 예: 그래프 인접 행렬, 게임 보드.

  • MutableList<MutableList<T>>

    • 크기 가변적.

    • 행/열 추가·삭제가 쉬움.

    • 예: 테이블 데이터, 동적 좌석 예약.

📌 2차원 배열/리스트 정리

1️⃣ 기본 예시 (Array 기반)

예시 1: 고정 크기 배열

예시 2: 초기값 채워넣기


2️⃣ 기본 예시 (MutableList 기반)

예시 1: 고정 크기 + 값 변경

예시 2: 행/열 자유롭게 추가


3️⃣ 실전 예시 (Array 기반)

예시 1: 게임 보드 초기화

예시 2: 인접 행렬 (그래프 표현)


4️⃣ 실전 예시 (MutableList 기반)

예시 1: 가변적인 좌석 예약 시스템

예시 2: 다차원 데이터 테이블

중첩 컬렉션

1️⃣ List → Map (List<Map<K,V>>)

✅ 기본 예시

💡 실전 예시


2️⃣ List → Set (List<Set<T>>)

✅ 기본 예시

💡 실전 예시


3️⃣ Map → List (Map<K, List<V>>)

✅ 기본 예시

💡 실전 예시


4️⃣ Map → Set (Map<K, Set<V>>)

✅ 기본 예시

💡 실전 예시


5️⃣ Set → Map (Set<Map<K,V>>)

✅ 기본 예시

💡 실전 예시


6️⃣ Set → List (Set<List<T>>)

✅ 기본 예시

💡 실전 예시

Last updated