제어문 - 반복문(배열 : Array, 컬렉션: List, Set, Map)
*반복문 (배열 : Array, 컬렉션: List, Map, Set)
-배열(Array) :
--여러 개의 값을 하나의 변수에 저장할 수 있는 데이터 타입
--값을 담기 전에 먼저 배열 공간의 개수를 할당하거나 초기화시에 데이터를 저장하면 데이터의 개수만큼 배열의 크기가 결정됨
--배열개수 증가 시 사용불가, 처음 정해진 값의 개수는 바꿀 수 없음
-컬렉션(List, Set, Map) :
--여러 개의 값을 하나의 변수에 저장할 수 있는 데이터 타입
--배열과 다르게 공간의 크기를 처음 크기로 고정하지 않고 임의의 개수를 담을 수 있는 동적배열
--동적으로 사용(입력된 값 변경)하기 위해서는 컬렉션에 접두어(mutable) 사용
--리스트 : 인덱스를 사용하는 데이터 타입, 중복된 값 사용가능
--셋 : 리스트에서 인덱스가 빠진 데이터 타입, 중복된 값 사용 불가
--맵 : 키와 값을 쌍으로 갖는 데이터 타입, 키는 인덱스처럼 사용
*배열(Array)
-값을 담기 전에 먼저 배열 공간의 개수를 할당하거나 초기화시에 데이터를 저장하면 데이터의 개수만큼 배열의 크기가 결정됨
-배열의 인덱스 : 10개의 공간을 가진 배열이 만들어지고 인덱스라는 위치번호가 있음, 배열의 인덱스는 0부터 시작함
var student = IntArray(10)
*arrayOf
-String은 기본 타입이 아니기에 StringArray가 존재하지 않음, 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)
-리스트 개수 가져오기 : size프로퍼티 사용, 컬렉션의 개수를 가져옴
변수명.size
*셋(MutableSet)
-중복을 허용하지 않는 리스트
-인덱스로 조회할 수 없음
-get() 함수 불가
-add() : 값 추가
-remove() : 값이 중복되지 않기 때문에 값으로 직접 조회 가능
*맵(MutableMap)
-키(Key) 와 값(Value) 를 입력해야 함
-맵의 키는 리스트와 비슷하지만 맵에서는 키를 직접 입력함
-맵 생성
var 변수명 = mutableMapOf<키 타입, 값 타입>()
-값 추가 : put() 함수 사용, 추가할 때마다 리스트처럼 배열 추가됨
변수명.put("키1", "값1")
-맵 사용 : get() 함수 사용, 키를 직접 입력해 값을 꺼냄
-맵 수정 : put() 함수 사용, 동일한 키를 가진 값이 있으면 키는 유지하고 값만 수정됨
-맵 삭제 : remove() 함수 사용, 키를 입력해 값을 삭제함, 키들의 이름과 값은 그대로 유지
*제네릭(<>)
-컬렉션이 사용하는 값의 타입을 지정하기 위한 도구
-값으로 초기화 하는 것을 제외하고 제네릭<> 을 사용하지 않으면 컬렉션 생성 불가
*함수와 프로퍼티
-괄호가 있으면 함수, 괄호가 없으면 프로퍼티
이 포스팅에 작성한 내용은 고돈호, ⌜이것이 안드로이드다⌟, 한빛미디어(주), 2022 에서 발췌하였습니다.