Android App/Kotlin

Collections(컬렉션)-List, Set, Map

AppJinny 2022. 12. 29. 16:26

*Collections(컬렉션)-List, Set, Map

-참고 : https://kotlinlang.org/docs/collections-overview.html

-컬렉션의 개체를 요소 또는 항목이라고 부름

-컬렉션의 유형 : List, Set, Map

-List : 인덱스(위치를 반영하는 정수)로 요소에 액세스할 수 있는 정렬된 컬렉션, 중복이 가능하며 순서가 중요함(ex. 전화번호목록)

-Set : 고유한 요소의 모음, 중복이 불가능하며 순서가 중요하지 않음(ex. 복권숫자의 집합)

-Map : 키-값 쌍의 집합, 키는 고유하며 각각은 정확히 하나의 값에 매핑, 값은 중복가능(ex. 직원 ID 및 위치저장)

 


*컬렉션 - 이뮤터블 컬렉션(불변형 컬렉션)

-크기와 값을 변경할 수 없는 컬렉션

-수정, 추가, 제거 모두 불가능

-여러 개의 값을 중간에 수정하지 않고 사용할 필요가 있을 때 사용 (ex. 요일 데이터)

-이뮤터블 컬렉션을 저장할 때 val로 선언하고 변수명을 대문자로 표시 (ex. val DAY_LIST)

 

*컬렉션 - 뮤터블 컬렉션(변형 컬렉션)

-배열과 다르게 공간의 크기를 처음 크기로 고정하지 않고 임의의 개수를 담을 수 있는 동적배열

-동적으로 사용하기 위해서는 자료형 앞에 뮤터블(Mutable) 접두어가 붙음

-빈 컬렉션을 만들 때 유형을 명시적으로 지정(ex. <String>)하여 사용

val numbersSet = setOf("one", "two", "three", "four") //이뮤터블 컬렉션
val emptySet = mutableSetOf<String>() //뮤터블 컬렉션

 

*리스트(MutableList)

-저장되는 데이터에 인덱스를 부여한 컬렉션

-중복된 값을 입력할 수 있음

-리스트 생성 : mutableListOf 형태로 사용

--기본생성 : var 변수명 = mutableListOf("인덱스0", "인덱스1", "인덱스2") 

--빈 컬렉션 생성 : var 변수명 = mutableListOf<String>()  //제네릭<> 사용, 타입명시

-리스트 값 추가 : add() 함수 사용, 입력되는 순서대로 동적으로 리스트 공간 자동 증가

변수명.add("인덱스3")

-리스트 입력된 값 사용 : get() 함수 사용, 값을 꺼낼 인덱스 값을 지정해 다른 변수에 저장

var 다른변수명 = 변수명.get(1)

-리스트 값 수정 : set()함수 사용, 특정 인덱스의 값 수정가능

변수명.set(1, "수정할 값")

-리스트 값 제거 : removeAt() 함수 사용, 제거할 인덱스 값을 지정해 삭제, 중간 인덱스 값을 삭제하면 뒤에 있는 인덱스의 값이 앞으로 이동함

변수명.removeAt(1)

-리스트 값의 개수 가져오기 : size프로퍼티 사용, 컬렉션의 개수를 가져옴

변수명.size

 

*셋(MutableSet)

-중복을 허용하지 않는 리스트

-인덱스로 조회할 수 없음

-get() 함수 불가

-add() : 값 추가

-remove() : 값이 중복되지 않기 때문에 값으로 직접 조회 가능

 


*맵(MutableMap)

-키(Key) 와 값(Value) 를 입력해야 함

-맵의 키는 리스트와 비슷하지만 맵에서는 키를 직접 입력함

-맵 생성

var 변수명 = mutableMapOf<키 타입, 값 타입>()

-값 추가 : put() 함수 사용, 추가할 때마다 리스트처럼 배열 추가됨

변수명.put("키1", "값1")

-맵 사용 : get() 함수 사용, 키를 직접 입력해 값을 꺼냄

-맵 수정 : put() 함수 사용, 동일한 키를 가진 값이 있으면 키는 유지하고 값만 수정됨

-맵 삭제 : remove() 함수 사용, 키를 입력해 값을 삭제함, 키들의 이름과 값은 그대로 유지

 

*제네릭(<>)

-컬렉션이 사용하는 값의 타입을 지정하기 위한 도구

-값으로 초기화 하는 것을 제외하고 제네릭<> 을 사용하지 않으면 컬렉션 생성 불가

*함수와 프로퍼티

-괄호가 있으면 함수, 괄호가 없으면 프로퍼티