Kotlin

Kotlin - 컬렉션

J_Bin 2022. 6. 21. 11:49

# 컬렉션

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