Kotlin 문법: "컬렉션 中 셋,맵,이뮤터블 컬렉션"

SHY(code poet)·2024년 2월 1일

✨Kotlin에 관하여✨ 

목록 보기
10/36

셋(Set)
: 값의 중복을 허용하지 않는 리스트. 리스트에서 인덱스가 빠진 데이터 타입으로 인덱스를 조회할 수 없고, get 함수도 지원하지 않는다.

  • 빈 셋으로 초기화하고 값 입력하기 (빈 리스트 사용과 유사. 그러나 리스트는 get 가능)
    var set = mutableListOf()
    var set = mutableSetOf()
    set.add("JAN")
    set.add("FEB")
    set.add("MAR")
    set.add("JAN") // 동일한 값은 입력되지 않습니다.

-셋의 값 삭제
set.remove("FEB") ⇒ 따라서, 값을 인덱스 번호가 아닌, 직접 입력하여 삭제해야 한다.

맵(Map)
: 키(Key)와 값(Value)을 쌍으로 갖는 데이터 타입.

  • var map = mutableMapOf<String, String>()
    ㄴ 제네릭으로 키와 값의 데이터 타입을 지정해서 맵 생성
    ㄴ 맵의 키는 리스트의 인덱스처럼 사용 가능하나, 키를 직접 입력해야 함.

a. 빈 맵 생성하고 값 추가: put -> 키와 값 추가 시마다 리스트처럼 맵의 공간 늘어남.
var map = mutableMapOf<String, String>()
map.put("key1", "value2")
map.put("key2", "value2")
map.put("key3", "value3")

b. 맵 사용: get -> 키 직집 입력하여 값 꺼내기
Log.d("CollectionMap", "map에 입력된 key1의 값은 ${map.get("key1")}입니다.")

// [로그캣 출력 내용]
// map에 입력된 key1의 값은 value2입니다.

c. 맵 수정: put -> 동일한 키 가진 값이 있으면 키 유지된 채 값만 수정
map.put("key2", "수정")

d. 맵 삭제: remove -> 함수에 키 입력
map.remove("key2")
단, 리스트와 다르게 키 값 변경 없이 그대로 유지. 그리하여, 출력시 null값 출력

이뮤터블 컬렉션(불변형 컬렉션)
: kotlin은 일반 배열처럼 크기를 변경할 수 없으면서 값 또한 변경할 수 없는 이뮤터블 컬렉션을 지원한다. (기존 컬렉션에서 mutable이라는 접두어가 제거된 형태로 사용 )
var list = listOf("1", "2") (맵의 형태와 유사)

  • 한 번 입력된 값을 변경할 수 없기 때문에 add, set 함수는 지원하지 않고 최초 입력된 값만을 ‘사용’(get)할 수 있다.
  • 이뮤터블 배열과 다른 점은 크기뿐만 아니라 값의 변경 또한 불가능하다는 것.
    ⇒ 즉, 불변형 컬렉션은 수정,추가,제거 모두 안되고, ‘생성, 사용’만 가능.
    var immutableList = listOf("JAN", "FEB", "MAR") // 생성
    Log.d("Collection", "리스트의 두 번째 값은 ${immtuableList.get(1)}입니다.) // 사용

// [로그캣 출력 내용]
// 리스트의 두 번째 값은 FEB입니다.

  • 그렇다면 이뮤터블 컬렉션은 언제 사용할 수 있을까?
    일반 변수 var와 읽기 전용 변수 val의 관계에서 그 사용법을 유추할 수 있는데, 기준이 되는 어떤 값의 모음을 하나의 변수에 저장할 필요가 있거나 또는 여러 개의 값을 중간에 수정하지 않고 사용할 필요가 있을 때 이뮤터블 컬렉션을 사용.
    대표적인 예로 요일 데이터가 있다.
    다음처럼 7개의 요일을 이뮤터블 리스트로 선언하면 중간에 바뀌지 않기 때문에 계속 같은 값을 유지하면서 사용할 수 있다.
    var dayList = listOf("월", "화", "수", "목", "금", "토", "일)
profile
진정한 개발자는 코드를 두려워하지 않는다. 오히려 코드가 그를 두려워한다.

0개의 댓글