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() 함수를 사용해야 합니다.
검색 성능
- 배열은 인덱스를 사용하여 원소에 빠르게 접근할 수 있습니다. 따라서 배열의 검색 성능은 우수합니다.
- 리스트는 인덱스를 사용하여 원소에 접근할 수 있지만, 배열보다 느립니다.
삽입/삭제 성능
- 배열은 삽입/삭제 시 원소를 이동해야 합니다. 따라서 배열의 삽입/삭제 성능은 보통입니다.
- 리스트는 삽입/삭제 시 원소를 이동할 필요가 없습니다. 따라서 리스트의 삽입/삭제 성능은 우수합니다.
메모리 사용량
- 배열은 원소를 연속된 메모리 공간에 저장합니다. 따라서 배열의 메모리 사용량은 적습니다.
- 리스트는 원소를 연결리스트로 연결하여 저장합니다. 따라서 리스트의 메모리 사용량은 배열보다 많습니다.
사용 예
- 배열은 크기가 고정되어 있고, 데이터 타입이 고정되어 있으며, 변경 가능한 자료구조가 필요한 경우에 사용됩니다. 예를 들어, 정수 배열은 숫자를 저장하는 데 사용할 수 있습니다.
- 리스트는 크기가 가변적이고, 데이터 타입이 가변적이며, 변경 불가능한 자료구조가 필요한 경우에 사용됩니다. 예를 들어, 문자열 리스트는 문자열을 저장하는 데 사용할 수 있습니다.
특강) 클래스, 상속, 인터페이스, 디버깅
'📒 TIL - Today I Learned' 카테고리의 다른 글
20231217 / Spring 입문 / 정의 / Framework / Library / Layered Architecture / DTO / Domain Model (0) | 2023.12.18 |
---|---|
20231215 / Spring 예습 독학 (0) | 2023.12.15 |
20231214 / 배열 ( Array ) (0) | 2023.12.14 |
20231214 / 비동기 프로그래밍 (0) | 2023.12.14 |
20231214 / 확장함수 (0) | 2023.12.14 |
블로그의 정보
꿈틀꿈틀 개발일기
jeongminy