꿈틀꿈틀 개발일기

20231215 / 컬렉션 ( List, Set, Map ) / 배열과 리스트 / 특강) 클래스

by jeongminy

 

 

 

컬렉션이란?

 

하나의 변수여러 값을 저장하기 위해 사용하는 자료구조

Kotlin은 불변형(immutable)과 가변형(mutable) 컬렉션을 모두 지원

  • List : 순서를 유지하는 컬렉션입니다.
  • Set : 순서를 유지하지 않는 컬렉션입니다.
  • Map : 의 쌍으로 이루어진 컬렉션입니다.

 

 

컬렉션의 생성

 

// 불변형 List 생성
val immutableList = listOf(1, 2, 3)

// 가변형 List 생성
val mutableList = mutableListOf(1, 2, 3)

// 불변형 Set 생성
val immutableSet = setOf(1, 2, 3)

// 가변형 Set 생성
val mutableSet = mutableSetOf(1, 2, 3)

// 불변형 Map 생성
val immutableMap = mapOf(1 to "A", 2 to "B", 3 to "C")

// 가변형 Map 생성
val mutableMap = mutableMapOf(1 to "A", 2 to "B", 3 to "C")

 

 

컬렉션의 값을 읽기

 

val immutableList = listOf(1, 2, 3)

// 컬렉션의 첫 번째 값을 읽기
val firstValue = immutableList[0]

// 컬렉션의 모든 값을 읽기
for (value in immutableList) {
    println(value)
}

 

 

컬렉션의 값을 변경

 

val mutableList = mutableListOf(1, 2, 3)

// 컬렉션의 첫 번째 값을 변경
mutableList[0] = 10

// 컬렉션의 값을 추가하기
mutableList.add(4)

// 컬렉션의 값을 삭제하기
mutableList.removeAt(0)

 

 

컬렉션의 크기 확인

 

val immutableList = listOf(1, 2, 3)

// 컬렉션의 크기를 확인
val size = immutableList.size

 

 

컬렉션의 요소가 포함되어 있는지 확인

 

val immutableList = listOf(1, 2, 3)

// 컬렉션의 요소가 포함되어 있는지 확인
val isContained = immutableList.contains(2)

 

 

컬렉션의 요소 검색

 

val immutableList = listOf(1, 2, 3)

// 컬렉션의 요소를 검색
val index = immutableList.indexOf(2)

 

 

컬렉션의 요소 정렬

 

val immutableList = listOf(3, 2, 1)

// 컬렉션의 요소를 정렬
immutableList.sort()

 

 

 

 

 

배열과 리스트의 다른점


배열과 리스트는 모두 순차적인 데이터를 저장하는 자료구조입니다.
하지만 두 자료구조는 다음과 같은 차이점이 있습니다.

특징 배열 리스트
크기 고정 가변
데이터 타입 고정 가변
변경 가능 여부 가능
불가능 또는 가능
검색 성능 우수 보통
삽입/삭제 성능 보통 우수
메모리 사용량 적음 많음

 

크기

  • 배열은 크기가 고정되어 있습니다. 따라서 배열을 생성할 때 크기를 지정해야 합니다. 만약 배열의 크기가 부족하면 새로운 배열을 생성해야 합니다.
  • 리스트는 크기가 가변적입니다. 따라서 리스트의 크기를 변경할 수 있습니다. 리스트에 원소를 추가하거나 삭제하면 리스트의 크기가 자동으로 조정됩니다.

 

 

데이터 타입

  • 배열은 데이터 타입이 고정되어 있습니다. 따라서 배열을 생성할 때 데이터 타입을 지정해야 합니다.
  • 리스트는 데이터 타입이 가변적입니다. 따라서 리스트의 원소는 서로 다른 데이터 타입을 가질 수 있습니다.

 

변경 가능 여부

  • 배열은 기본적으로 변경 가능합니다. 따라서 배열의 원소를 삽입, 삭제, 수정할 수 있습니다.
  • 리스트는 기본적으로 변경 불가능합니다. 따라서 리스트의 원소를 삽입, 삭제할 수는 있지만 수정할 수는 없습니다. 변경 가능한 리스트를 생성하려면 mutableListOf() 함수를 사용해야 합니다.

 

검색 성능

  • 배열은 인덱스를 사용하여 원소에 빠르게 접근할 수 있습니다. 따라서 배열의 검색 성능은 우수합니다.
  • 리스트는 인덱스를 사용하여 원소에 접근할 수 있지만, 배열보다 느립니다.

 

삽입/삭제 성능

  • 배열은 삽입/삭제 시 원소를 이동해야 합니다. 따라서 배열의 삽입/삭제 성능은 보통입니다.
  • 리스트는 삽입/삭제 시 원소를 이동할 필요가 없습니다. 따라서 리스트의 삽입/삭제 성능은 우수합니다.

 

메모리 사용량

  • 배열은 원소를 연속된 메모리 공간에 저장합니다. 따라서 배열의 메모리 사용량은 적습니다.
  • 리스트는 원소를 연결리스트로 연결하여 저장합니다. 따라서 리스트의 메모리 사용량은 배열보다 많습니다.

 

사용 예

  • 배열은 크기가 고정되어 있고, 데이터 타입이 고정되어 있으며, 변경 가능한 자료구조가 필요한 경우에 사용됩니다. 예를 들어, 정수 배열은 숫자를 저장하는 데 사용할 수 있습니다.
  • 리스트는 크기가 가변적이고, 데이터 타입이 가변적이며, 변경 불가능한 자료구조가 필요한 경우에 사용됩니다. 예를 들어, 문자열 리스트는 문자열을 저장하는 데 사용할 수 있습니다.

 

 

 

 

 

 특강) 클래스, 상속, 인터페이스, 디버깅

 

 

 

 

 

 

블로그의 정보

꿈틀꿈틀 개발일기

jeongminy

활동하기