프로그래머스 문제를 풀며 헷갈리는 부분을 매번 검색하는 수고를 줄이고자 조금씩이라도 꾸준히 작성해보고자 한다 🤓 요즘 문제를 풀며 컬렉션을 가장 많이 사용하고 있는데 객체를 생성할 때 컬렉션의 immutable과 mutable에 대해 확실한 이해가 필요하다고 생각 되어 컬렉션 종류 및 사용법에 대해 우선적으로 정리해보겠다 !
number["one"] = 2
와 같이 데이터를 수정하려고 할 경우 no set method providing array access
에러가 발생한다. val number = mapOf<String, Int>("one" to 1, "two" to 2, "three" to 3, "four" to 4, "five" to 5)
println("${number}") // {one=1, two=2, three=3, four=4, five=5}
number["one"] = 2 // error: no set method providing array access
number["one"] = 2
와 같이 []
에 key 값을 넣고 해당 데이터를 참조한 후 값을 수정한다.val number = mutableMapOf<String, Int>("one" to 1, "two" to 2, "three" to 3, "four" to 4, "five" to 5)
println("${number}") // {one=1, two=2, three=3, four=4, five=5}
number["one"] = 2
println("${number}") // {one=2, two=2, three=3, four=4, five=5}
val number = mutableMapOf<String, Int>("one" to 1, "two" to 2, "three" to 3, "four" to 4, "five" to 5)
// 추가 (1)
number["six"] = 6 // {one=1, two=2, three=3, four=4, five=5, six=6}
// 추가 (2)
number.put("ten", 10) // {one=1, two=2, three=3, four=4, five=5, six=6, ten=10}
val number = mutableMapOf<String, Int>("one" to 1, "two" to 2, "three" to 3, "four" to 4, "five" to 5)
number.remove("one") // {two=2, three=3, four=4, five=5}
compareBy
함수는 오름차순으로 정렬이 되고 내림차순을 할 경우는 compareByDiscending
함수를 사용한다.val number = mutableMapOf<Int, String>(1 to "one", 2 to "two", 3 to "three")
// 오름차순 정렬
val sorted = number.toSortedMap (compareBy{it})
println("${sorted}") // {1=one, 2=two, 3=three}
// 내림차순 정렬
val sortedDescending = number.toSortedMap(compareByDescending {it})
println("${sortedDescending}") // {3=three, 2=two, 1=one}
val number = mutableMapOf<Int, String>(1 to "one", 2 to "two", 3 to "three")
// 오름차순 정렬
val sorted = number.toList().sortedWith(compareBy({it.second})).toMap()
println("${sorted}") // {1=one, 3=three, 2=two}
// 내림차순 정렬
val sortedDescending = number.toList().sortedWith(compareByDescending({it.second})).toMap()
println("${sortedDescending}") // {2=two, 3=three, 1=one}
val number = mutableMapOf<Int, String>(1 to "one", 2 to "two", 3 to "three")
number.forEach { key, value ->
println("${key}, ${value}")
}
for ((key, value) in number) {
println("${key}, ${value}")
}
> 출력 결과
1, one
2, two
3, three
1, one
2, two
3, three
val numberMap = mutableMapOf<Int, String>(1 to "one", 2 to "two", 3 to "three")
val containsKey1 = numberMap.containsKey(1)
val containsKey2 = numberMap.containsKey(5)
println("${containsKey1}") // true
println("${containsKey2}") // false
val containsValue1 = numberMap.containsValue("one")
val containsValue2 = numberMap.containsValue("five")
println("${containsValue1}") // true
println("${containsValue2}") // false
val getKey = numberMap.get(1)
println("${getKey}") // one
val getOrDefault1 = numberMap.getOrDefault(2, "zero")
val getOrDefault2 = numberMap.getOrDefault(5, "zero")
println("${getOrDefault1}") // two
println("${getOrDefault2}") // zero
val isEmpty = numberMap.isEmpty()
val isNotEmpty = numberMap.isNotEmpty()
println("${isEmpty}") // false
println("${isNotEmpty}") // true
val size = numberMap.size
val count = numberMap.count()
println("${size}") // 3
println("${count}") // 3
val keys = numberMap.keys
val values = numberMap.values
println("${keys}") // [1, 2, 3]
println("${values}") // [one, two, three]