Set은 정해진 순서가 없는 요소들의 집합, 중복값이 없음 즉, 모든 요소가 unique함
Map은 요소가 키와 값의 쌍 형태로 저장된다. 키는 중복될 수 없고 유일합니다. 하지만 값은 중복해서 사용할 수 있다.
Set은 setOf()를 사용해서 Set을 생성하고, mutableSetOf()를 이용해서 가변형 Set을 생성할 수 있다.
불변형 setOf()
val mixedTypeSet = setOf("Hello", "5", 1, 3.14)
println(mixedTypeSet)
// [Hello, 5, 1, 3.14]
val inSet: Set<Int> = setOf<Int>(1, 2, 5, 5, 5)
println(inSet)
// [1, 2, 5]
setOf에서는 자료형을 혼합하거나 특정 자료형을 지정할 수 있다.
중복요소를 허용하지 않기 때문에 intSet에서는 5가 한번만 나타난다.
가변형 mutableSetOf()
mutableSetOf()함수로 요소의 추가 삭제가 가능 mutableSetOf()는 MutableSet인터페이스 자료형을 반환하는데, 내부적으로 자바의 LinkedHashSet을 만들어냅니다.
val animals = mutableSetOf("String", "Dog", "Cat")
println(animals)
animals.add("Dog")
animals.add("Dog2")
println(animals)
animals.remove("Python")
println(animals)
// [String, Dog, Cat]
// [String, Dog, Cat, Dog2]
// [String, Dog, Cat, Dog2]
hashSetOf()
val intsHashSet: HashSet<Int> = hashSetOf(6, 3, 4, 8);
intsHashSet.add(5)
intsHashSet.remove(6)
println(intsHashSet)
// [8, 3, 4, 5]
sortedSetOf()
val instSortedSet: TreeSet<Int> = sortedSetOf(4, 1, 2, 7)
instSortedSet.add(6)
instSortedSet.remove(6)
println("instSortedSet : ${instSortedSet}")
// instSortedSet : [1, 2, 4, 7]
linkedSetOf()
val instLinkedHashSet: LinkedHashSet<Int> = linkedSetOf(1, 2, 7, 2, 9)
instLinkedHashSet.add(4)
instLinkedHashSet.remove(2)
println("instLinkedHashSet : ${instLinkedHashSet}")
// instLinkedHashSet : [1, 7, 9, 4]
val langMap = mapOf(11 to "Java", 22 to "Kotlin", 33 to "C++")
println(langMap)
// {11=Java, 22=Kotlin, 33=C++}
Key와 Value 따로 출력하기
방법1. $사인 사용하기.
for((key, value) in langMap) {
println("key : ${key} , value = ${value}")
}
// key : 11 , value = Java
// key : 22 , value = Kotlin
// key : 33 , value = C++
방법2. it사용
langMap.forEach {
println("key : " + it.key + ", value : " + it.value)
}
// key : 11, value : Java
// key : 22, value : Kotlin
// key : 33, value : C++
Map에서 사용하는 멤버 프로퍼티와 메소드
mutableMapOf()는 추가, 삭제가 가능한 가변형 Map을 정의합니다. 이 함수는 MutableMap(K, V) 인터페이스 자료형을 반환합니다.
val capitalCityMap: MutableMap<String, String> = mutableMapOf()
capitalCityMap.put("UK", "London")
capitalCityMap.put("JP", "Tokyo")
capitalCityMap.put("CH", "Beijing")
println(capitalCityMap)
// {UK=London, JP=Tokyo, CH=Beijing}
capitalCityMap.remove("CH")
println(capitalCityMap)
// {UK=London, JP=Tokyo}
val appData = mutableMapOf("USA" to "Washington")
capitalCityMap.putAll(appData)
println(capitalCityMap)
// {UK=London, JP=Tokyo, USA=Washington}
val hashMap = hashMapOf(1 to "Hello", 2 to "World")
println("hashMap : ${hashMap}")
// hashMap : {1=Hello, 2=World}
val sortedMap = sortedMapOf(1 to "Apple", 2 to "Banana", 0 to "PineApple")
println("sortedMap : ${sortedMap}")
// sortedMap : {0=PineApple, 1=Apple, 2=Banana}
val linkedHash = linkedMapOf(1 to "Computer", 2 to "Mouse")
println("linkedHash : ${linkedHash}")
// linkedHash : {1=Computer, 2=Mouse}