Immutable Collections : 값을 추가, 삭제, 변경이 불가능 한 콜렉션
listOf<T>, setOf<T>, mapOf<TKey, TValue>
// 1. List -> 중복 허용
val numberList = listOf<Int>(1, 2, 3, 3, 3)
// 출력 값: [1, 2, 3]
// 1-1. 원소단위로 출력
println(numberList[0])
println(numberList[1])
// 2. Set (집합)
// 집합의 특징: 중복을 허용하지 않는다, 순서가 없다
val numberSet = setOf<Int>(4, 5, 6, 6, 6)
// 출력 값: [4, 5, 6]
// 2-1. 출력
// 순서가 없기 때문에 Index가 없다.
numberSet.forEach { println(it) }
// 출력 값: 4 5 6
// 3. Map -> 원소가 쌍을 이루는 Key와 value를 가진다
// mapOf<Key, Value>
val numberMap = mapOf<String, Int>("A" to 11, "B" to 22, "C" to 33)
// 출력 값: {1=A, 2=b, 3=C}
// 3-1. 출력: Key값을 인덱스로 사용한다.
println(numberMap["A"])
println(numberMap["B"])
println(numberMap["C"])
Mutable Collection : 추가, 삭제, 변경이 가능한 콜렉션
mutableListOf<T>, mutableSetOf<T>, mutableMapOf<TKey, TValue>
// 1. List
val mNumberList = mutableListOf<Int>(0, 1)
// 1-1. 마지막 Index 뒤에 순서대로 원소를 수가
mNumberList.add(3)
mNumberList.add(4)
println(mNumberList)
// 출력 값: [0, 1, 3, 4]
// 1-2. 위치를 지정하여 원소소를 추가
mNumberList.add(0, 10)
println(mNumberList)
// 출력 값: [10, 0, 1, 3, 4]
// 1-3. 지정한 index에 원소 추가
mNumberList.set(0, 100)
// 출력 값: [100, 0, 1, 3, 4] 해당 위치에 값이 들어가고 기존값 부터 우측 index로 이동된다.
// 1-4. 지정한 index의 원소 제거
mNumberList.removeAt(0)
// 출력 값: [0, 1, 3, 4]
// 2. Set
val mNumberSet = mutableSetOf<Int>(1, 2, 3, 3, 3)
// 2-1. 원소 추가
mNumberSet.add(10)
println(mNumberSet)
// 출력 값: [1, 2, 3, 10]
// 2-2. 원소제거: 제거할 원소의 "값"을 입력한다
mNumberSet.remove(2)
// 출력 값: [1, 3, 10]
// 3. Map
val mNumberMap = mutableMapOf<String, Int>("one" to 1, "two" to 2)
// 3-1. 원소 추가
mNumberMap["three"] = 3
mNumberMap["a"] = 10
mNumberMap.put("kkk", 999)
println(mNumberMap)
// 출력 값: {one=1, two=2, three=3, a=10, kkk=999}
// 3-2. 값 변경
mNumberMap.replace("two", 222)
// 출력 값: {one=1, two=222, three=3, a=10, kkk=999}
// 3-3. key, value의 목록출력
println(mNumberMap.keys)
// 출력 값: [one, two, three, a, kkk]
println(mNumberMap.values)
// 출력 값: [1, 222, 3, 10, 999]
// 3-4. Map의 전체 내용지우기
mNumberMap.clear()