728x90
반응형
Java에서도 중복된 값을 허용할 땐 List, Unique한 값만을 허용할 땐 Set을 사용한다.
Kotlin에서도 그와 동일하게 사용할 수 있다.
fun sets() {
val intSet = setOf(1, 1, 2, 3, 9, 9, 4)
println(intSet)
println(9 in intSet)
println(99 in intSet)
println("9 contains : " + intSet.contains(9))
println("99 contains : " + intSet.contains(99))
print("[1, 9, 2] containsAll : ")
println(intSet.containsAll(setOf(1, 9, 2)))
print("[1, 9, 5] containsAll : ")
println(intSet.containsAll(setOf(1, 9, 5)))
println(intSet.union(setOf(3, 4, 5, 6)))
println(intSet intersect setOf(0, 1, 2, 7, 8))
println(intSet.intersect(setOf(0, 1, 2, 7, 8)))
println(intSet.subtract(setOf(0, 1, 9, 10)))
}
fun main() {
sets()
}
set의 원소로 중복된 값을 넣어 생성을 해도 값을 출력해 보면 중복이 제거 된 것을 볼 수 있다.
해당 Set 안에 값이 있는지 없는지는 'in'을 통해 확인할 수 있으며, 반대로 contains를 쓸 수 있다.
해당 원소들이 모두 있는지를 확인하려면 containsAll을 쓸 수 있다. 하나의 값이라도 없으면 false를 반환한다.
합집합, 교집합, 차집합을 위해서는 union, intersect, subtract를 사용할 수 있다.
list를 set으로 바꿀 수도 있다.
fun listToSet() {
val list = listOf(3, 3, 2, 1, 2)
println(list)
val set = list.toSet()
var setOf1 = setOf(3, 3, 2, 1, 2)
setOf1 += 10
val mutableSetOf = mutableSetOf(3, 3, 2, 1, 2)
mutableSetOf += 10
println(set)
println(setOf1)
println(mutableSetOf)
println(list.distinct())
println("abbcc".toSet())
}
fun main() {
listToSet()
}
list에서는 중복이 허용되지만 toSet 함수 호출 이후에는 중복된 값이 사라졌음을 알 수 있다.
setOf로 만든 경우에는 읽기 전용으로 만들어 지지만, mutableSetOf를 사용한다면 값을 추가, 삭제 할 수 있다.
중복을 제거하기 위해서 set 대신에 distinct를 사용할 수도 있다.
문자열을 set으로 바꾸게 되면 중복되는 문자는 사라지게 된다.
728x90
반응형
'Develop! > Kotlin' 카테고리의 다른 글
Property in kotlin (0) | 2023.08.07 |
---|---|
Map in Kotlin (0) | 2023.08.04 |
가변인자 목록 in Kotlin (0) | 2023.08.02 |
list int kotlin (0) | 2023.07.31 |
생성자 in kotlin (0) | 2023.07.27 |