# 컬렉션
package chap02.section1
/* 불변형(only read) 가변형
List listOf mutableListOf,arrayListOf
Set setOf mutableSetOf,hashSetOf,linkedSetOf,sortedSetOf
Map mapOf mutableMapOf,hashMapOf,linkedMapOf,sortedMapOf
*
*/
// 컬렉션의 인터페이스 멤버 및 멤버 메서드
fun main() {
val arr = listOf(1,2,3,4,5)
val arr2 = listOf(4,5)
println("size : ${arr.size}")
println("Empty ? ${arr.isEmpty()}")
println("if 3 in arr? ${arr.contains(3)}")
println("if arr2 in arr? ${arr.containsAll(arr2)}" )
}
# 불변형 List를 가변형으로 변환하기
package chap02.section1
/* 불변형 List를 가변형으로 변환하기 */
fun main() {
val names : List<String> = listOf("one","two","three")
val mutableNames = names.toMutableList()
mutableNames.add("five")
println(mutableNames)
}
# HashSet : 해시 테이블이란 내부적으로 키와 인덱스를 이용해 검색과 변경 등을 매우 빠르게 처리할 수 있는 자료구조이다.
package chap02.section1
/* HashSet의 초기화 */
// 해시 테이블이란 내부적으로 키와 인덱스를 이용해 검색과 변경 등을 매우 빠르게 처리할 수 있는 자료구조이다.
fun main() {
val intHashSet : HashSet<Int> = hashSetOf(6,3,4,7)
intHashSet.add(5)
intHashSet.remove(6)
println(intHashSet)
}
/* HashSet은 위 실행 결과와 같이 입력 순서와 중복된 요소는 무시된다.
따로 정렬 기능은 없지만 해시값을 통해 요소를 찾아내므로 검색 속도는 O(1)이다.
* */
# TreeSet : HashSet보다는 성능이 떨어지지만 데이터를 추가하거나 삭제하는 데 시간이 걸리지만 검색과 정렬이 뛰어나다는 장점이 있다.
package chap02.section1
import java.util.*
/* TreeSet의 초기화 */
// HashSet보다 성능이 좀 떨어지나 데이터를 추가하거나 삭제하는 데 시간이 걸리지만 검색과 정렬이 뛰어나다는 장점이 있다.
fun main() {
val intsSortedSet: TreeSet<Int> = sortedSetOf(4,1,7,2)
intsSortedSet.add(6)
intsSortedSet.remove(1)
println("intsSortedSet = $intsSortedSet")
intsSortedSet.clear() // 모든 값 삭제
println("intsSortedSet = $intsSortedSet")
}
// TreeSet도 마찬가지로 가변성만 사용할 수 있기 때문에 요소의 추가 및 삭제 등이 가능하다.
# linkedList
package chap02.section1
/* linkedSetOf의 초기화 */
// 링크드 리스트를 사용해 구현된 해시 테이블에 요소를 저장한다. 저장된 순서에 따라 값이 정렬되며 HashSet, TreeSet보다 느리다.
// 자료구조상 다음 데이터를 가리키는 포인터 연결을 통해 메모리 저장 공간을 좀 더 효율적으로 사용가능하다.
fun main() {
val intsLinkedHashSet : LinkedHashSet<Int> = linkedSetOf(35,21,76,26,75)
intsLinkedHashSet.add(4)
intsLinkedHashSet.remove(21)
println(intsLinkedHashSet)
intsLinkedHashSet.clear()
println(intsLinkedHashSet)
}
# Map
package chap02.section1
/* Map의 활용 */
// 키와 값으로 구성된 요소를 저장한ㄷ. 여기서 키와 값은 모두 객체이다. 키는 중복x, 값은 중복o
fun main() {
val capitalCityMap : MutableMap<String,String> = // 선언할 때 키와 값의 자료형을 명시할 수 있음
mutableMapOf("Korea" to "Seoul","China" to "Beijing","Japan" to "Tokyo")
capitalCityMap["UK"] = "London" // 요소 추가
capitalCityMap.remove("China") // 요소 삭제
println(capitalCityMap)
}
package chap02.section1
/* Map의 기타자료 구조 활용 */
import java.util.*
import kotlin.collections.HashMap
fun main() {
val hashMap : HashMap<Int,String> = hashMapOf(1 to "Hello",2 to "world")
println("hashMap = ${hashMap}")
val sortedMap : SortedMap<Int,String> = sortedMapOf(1 to "Apple",2 to "Banana")
println("sortedMap = ${sortedMap}")
val linkedHash : LinkedHashMap<Int,String> = linkedMapOf(1 to "computer", 2 to "Mouse")
println("linkedHash = $linkedHash")
}
'Kotlin' 카테고리의 다른 글
Kotlin - 시퀀스의 활용 (0) | 2022.06.21 |
---|---|
Kotlin - 컬렉션의 확장 함수 (0) | 2022.06.21 |
Kotlin - 배열 (0) | 2022.06.20 |
Kotlin - 제네릭 (0) | 2022.06.20 |
Kotlin - 여러 연산자들의 표현 (0) | 2022.06.20 |