POST

[kotlin] 안드로이드 코틀린 컬렉션 - LIST와 제네릭

여러 개의 값을 넣을 수 있는 자료형에는 배열 외에도 컬렉션(Collection)이 있습니다. 컬렉션은 다른 이름으로 동적 배열이라고도 하는데, 배열과는 다르게 공간의 크기를 처음 크기로 고정하지 않고 임의의 개수를 담을 수 있기 때문입니다.

컬렉션에는 크게 세가지로 리스트(List), 맵(Map), 셋(Set)이 있습니다.

 

리스트(List)

리스트(List)는 저장되는 데이터에 인덱스를 부여한 컬렉션이며 중복된 값을 입력할 수 있다.

코틀린에서는 동적으로 리스트를 사용하기 위해서는 리스트 자료형 앞에 뮤터블(Mutable)이라는 접두어(prefix)가 붙는다. 보통 mutablList, mutableMap, mutableSet 으로 사용을 한다.

 

리스트 생성 - mutablListOf

생성시에는 Array와 같이 [데이터 타입 + Of]의 형태로 사용할 수 있다.

var 변수이름 = mutable데이터타입Of("값1","값2","값3")

리스트에 값 추가 - add

mutableList 변수에 값을 투가 하기 위해서는 add()함수를 이용한다.

변수이름.add("추가값")

값이 추가되면 동적으로 리스트의 공간이 자동으로 증가합니다. 값의 위치는 인덱스를 따로 지정해 주지 않아도 입력되는 순서대로 인덱스가 지정됩니다.

 

리스트에 입력된 값 사용 - get

mutableList 변수의 값을 사용하기 위해서는 get()함수를 이용합니다.

var 변수이름2 = 변수이름.get(2)

위의 예시는 다른 변수에 값을 저장하는 코드입니다. get()함수는 add()함수와는 다르게 값의 위치 즉, 인덱스를 지정해서 몇번째 값을 사용할 것인지 명시해야 합니다.

 

리스트값 수정 - set

mutableList 변수의 값을 수정 하기 위해서는 set()함수를 이용합니다.

변수이름.set(수정할인덱스,"수정할값")

set함수는 수정할 인덱스를 지정하고 변경할 값을 함께 정어 주어야합니다.

 

리스트의 값 제거 - removeAt

mutableList 변수의 값을 제거 하기 위해서는 removeAt함수를 이용합니다.

변수이름.removeAt(삭제할인덱스)

값을 삭제하기 위해서는 삭제할 값의 인덱스를 명시해야 합니다.

 

빈 리스트 생성하기 - 제네릭

아무것도 없는 빈리스트를 생성하면 앞으로 입력되는 값의 데이터 타입을 알 수 없기 때문에 값의 타입을 추론할 수 없습니다. 그래서 빈 컬렉션의 경우 '데이터 타입+Of' 만으로는 생성 할 수 없고 직접 지정을 해주어야합니다.

var 변수이름 = mutableListOf<데이터타입>()

이처럼 컬렉션을 생성시 사용된 '<>' 괄호는 제네릭이라고 하며 코틀린에서는 컬렉션을 생성할 때 제네릭을 사용 하지 않으면 생성 할 수 없습니다. 하지만 위의 예시처럼 값으로 컬렉션을 생성, 초기화 하는 경우 생략이 가능합니다.

 

컬렉션의 개수 가져오기 - size

컬렉션의 개수를 가져오기 위해서는 size 프로퍼티를 사용하여 가져옵니다.

val 변수이름 = 변수이름.size