Android App/Kotlin

제어문 - 반복문(배열 : Array, 컬렉션: List, Set, Map)

AppJinny 2022. 10. 26. 01:18

*반복문 (배열 : Array, 컬렉션: List, Map, Set)

-배열(Array) :

--여러 개의 값을 하나의 변수에 저장할 수 있는 데이터 타입

--값을 담기 전에 먼저 배열 공간의 개수를 할당하거나 초기화시에 데이터를 저장하면 데이터의 개수만큼 배열의 크기가 결정됨

--배열개수 증가 시 사용불가, 처음 정해진 값의 개수는 바꿀 수 없음

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

--여러 개의 값을 하나의 변수에 저장할 수 있는 데이터 타입

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

--동적으로 사용(입력된 값 변경)하기 위해서는 컬렉션에 접두어(mutable) 사용

--리스트 : 인덱스를 사용하는 데이터 타입, 중복된 값 사용가능

--셋 : 리스트에서 인덱스가 빠진 데이터 타입, 중복된 값 사용 불가

--맵 : 키와 값을 쌍으로 갖는 데이터 타입, 키는 인덱스처럼 사용


*배열(Array)

-값을 담기 전에 먼저 배열 공간의 개수를 할당하거나 초기화시에 데이터를 저장하면 데이터의 개수만큼 배열의 크기가 결정됨

배열(Array) 사용

-배열의 인덱스 : 10개의 공간을 가진 배열이 만들어지고 인덱스라는 위치번호가 있음, 배열의 인덱스는 0부터 시작함

var student = IntArray(10)

배열의 인덱스

 


*arrayOf

-String은 기본 타입이 아니기에 StringArray가 존재하지 않음, arrayOf 함수로 값 직접 할당 가능

arrayOf

 


*배열의 인덱스 값 바꾸기

-배열을 선언한 변수명 옆에 대괄호[] 사용하고 인덱스번호 작성 후 값이나 다른변수명 입력 (값변경, 다른변수에 값저장)

배열명[인덱스] = 값

var 다른변수명 = 배열명[인덱스]

-set()함수를 사용하여 set함수에 인덱스와 값을 파라미터로 넘겨주어 인덱스에 해당하는 값 변경

배열명.set(인덱스, 값)

-get()함수를 사용하여 인덱스에 있는 값을 가져와 다른 변수에 저장할 수 있음

var 다른변수명 = 배열명.get(인덱스)

 


*배열 사용하기

 



*컬렉션 (List, Set, Map) - 이뮤터블 컬렉션(불변형 컬렉션)

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

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

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

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

 

*컬렉션 (MutableList, MutableSet, MutableMap) - 뮤터블 컬렉션(변형 컬렉션)

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

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

 

*리스트(MutableList)

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

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

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

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

var 변수명 = mutableListOf<String>() //제네릭<> 사용, 타입이 문자열로 된 빈 컬렉션 생성

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

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

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

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

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

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

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

변수명.removeAt(1)

컬렉션 List 사용


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

변수명.size

컬렉션 List 사용

 


*셋(MutableSet)

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

-인덱스로 조회할 수 없음

-get() 함수 불가

-add() : 값 추가

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

 


*맵(MutableMap)

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

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

-맵 생성

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

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

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

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

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

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


*제네릭(<>)

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

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

*함수와 프로퍼티

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




이 포스팅에 작성한 내용은 고돈호, ⌜이것이 안드로이드다⌟, 한빛미디어(주), 2022 에서 발췌하였습니다.