Collections(컬렉션)-List, Set, Map
*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() 함수 사용, 키를 입력해 값을 삭제함, 키들의 이름과 값은 그대로 유지
*제네릭(<>)
-컬렉션이 사용하는 값의 타입을 지정하기 위한 도구
-값으로 초기화 하는 것을 제외하고 제네릭<> 을 사용하지 않으면 컬렉션 생성 불가
*함수와 프로퍼티
-괄호가 있으면 함수, 괄호가 없으면 프로퍼티