배열(Array)
- 기본타입 뒤에 Array를 붙여서 만들 수 있음
- 문자열타입은 Array(개수, { item -> "할당할 값" } 으로 만들 수 있음
- 고정 길이를 갖으며 늘리거나 줄일 수 없음
배열 선언
// 기본타입 배열 선언
val intArray = IntArray(10)
val longArray = LongArray(10)
val charArray = CharArray(10)
val floatArray = FloatArray(10)
val doubleArray = DoubleArray(10)
// 문자열타입 배열 선언 - String은 기본 타입이 아니기 때문에 StringArray가 없으므로 다음과 같이 사용
val stringArray = Array(10, {item -> ""}) // {item -> ""} -> 문자열 배열에 ""값 할당
val empty = emptyArray<String>()
// arrayOf 함수를 사용해서 선언과 동시에 값을 입력할 수 있음(반환 타입 생략 가능)
val dayArray: Array<String> = arrayOf("MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN")
데이터 클래스를 사용한 배열 선언
fun main() {
val fruits = arrayOf(Fruit("Apple", 2.5), Fruit("Grape", 3.5))
println(fruits.contentToString())
}
data class Fruit(val name: String, val price: Double)
배열에 값 추가
- 배열명[인덱스] = 값
- 배열명.set(인덱스, 값)
- 배열의 범위를 벗어난 인덱스에 값을 할당하면 ArrayIndexOutOfBoundsException 발생
intArray[3] = 10
intArray.set(6, 20)
배열에 있는 값 꺼내기
- 배열명[인덱스]
- 배열명.get(인덱스)
println(intArray[3]) // 10
println(intArray.get(6)) // 20
배열의 요소 출력하기
- 배열명.contentToString()
- for in 구문 사용
- 단순히 배열명으로 출력하면 주소값 출력
println(intArray) // [I@682a0b20
println(intArray.contentToString()) // [0, 0, 0, 10, 0, 0, 20, 0, 0, 0]
for (value in intArray) {
println(value) // 0, 0, 0, 10, 0, 0, 20, 0, 0, 0
}
컬렉션(Collection)
- 리스트(List), 맵(Map), 셋(Set)
- 기본 컬렉션은 Immutable(변할 수 없음), Mutable(변할 수 있음)을 붙이면 동적 배열로 사용 가능
- 동적 배열 : 배열과 다르게 크키를 고정하지 않고 임의의 개수를 담을 수 있음
- 컬렉션의 값의 단위는 엘리먼트
- 리스트 엘리먼트 = 리스트의 (값)
- 맵 엘리먼트 = 맵의 (키와 값)
이뮤터블 컬렉션(Immutable Collection)
- 컬렉션에서 mutable 이라는 접두어가 제거된 형태로 사용
- 한 번 입력된 값을 변경할 수 없음
- add나 set 함수는 지원 X
- 최초 입력된 값만 사용 가능(추가, 수정, 제거 X)
리스트(List)
- 저장되는 데이터에 인덱스를 부여한 컬렉션
- 중복된 값 입력 가능
- 동적 배열로 사용하기 위해 자료형 앞에 mutable을 추가
- 배열과 같이 데이터 타입 Of 형태 사용 가능
리스트 생성 : mutableListOf
val stringList = mutableListOf<String>() // 빈 리스트 사용 - 타입을 명시해야 함
val mutableList = mutableListOf("MON", "TUE", "WED") // 값으로 추론할 수 있으므로 제네릭(<>) 생략 가능
리스트에 값 추가 : add
동적으로 리스트의 공간이 자동으로 증가
mutableList.add("THU") // boolean값을 반환, mutableList[3]에 추가됨
리스트에서 값 꺼내기 : get
println(mutableList.get(1)) // TUE
리스트 값 수정 : set
mutableList.set(2, "FRI") // WED - 이전 값이 반환됨
리스트에 입력된 값 제거 : removeAt
인덱스가 하나씩 감소하며 빈자리 인덱스로 이동
mutableList.removeAt(1) // TUE - 삭제된 값 반환
컬렉션 개수 가져오기
println(mutableList.size) // 3
셋(Set)
- 중복을 허용하지 않는 리스트
- 인덱스로 조회 X, get 함수 지원 X
셋 생성 : mutableSetOf
val set = mutableSetOf<String>()
val stringSet = mutableSetOf("MON", "TUE", "MON")
println(stringSet) // [MON, TUE]
셋에 값 추가 : add
set.add("MON") // boolean값 반환
set.add("TUE")
set.add("MON") // 이미 존재하는 값으로 입력 X
println(set) // [MON, TUE]
셋의 값 삭제 : remove
set.remove("TUE") // boolean값 반환
맵(Map)
- 키(Key)와 값(Value)의 쌍으로 입력되는 컬렉션
- 인덱스에 해당하는 키를 직접 지정해서 사용
- 제네릭으로 키와 값의 데이터 타입을 지정해서 맵을 생성
맵에 값 추가 : put
키와 값을 추가할 때마다 리스트처럼 맵의 공간이 늘어남
map.put("key1", "value2")
map.put("key2", "value2")
map.put("key3", "value3")
맵에서 값 꺼내기 : get
println(map.get("key2")) // value2, 없는 key이면 null 반환
맵의 값 수정 : put
map.put("key3", "value333") // key3에 입력되어 있던 값을 반환
println(map) // {key1=value2, key2=value2, key3=value333}
맵의 값 삭제 : remove
map.remove("key2") // 삭제된 key의 값 반환
println(map) // {key1=value2, key3=value333}
'Kotlin > Kotlin문법' 카테고리의 다른 글
[Kotlin 문법] 함수 (0) | 2024.04.23 |
---|---|
[Kotlin 문법] 반복문 (1) | 2024.04.19 |
[Kotlin 문법] 조건식(if, when) (0) | 2024.04.14 |
[Kotlin 문법] 변수 & 기본 데이터 타입(자료형) (0) | 2024.04.14 |