본문 바로가기
컴퓨터/안드로이드

[안드로이드/코틀린] 코틀린 배열과 리스트 정리, 배열과 리스트 차이점

by 도도새 도 2022. 6. 8.

코틀린 배열과 리스트 

 

 코딩 공부를 하다 보면 반드시 만날 수밖에 없는 존재가 있다. 그것은 바로 배열 혹은 리스트이다. 배열이나 리스트는 컬렉션 데이터 타입이다. 컬렉션 데이터 타입이란 연관된 데이터를 하나의 변수로 관리하는 방법을 말한다.

 

이를테면 초등학생인 A, B, C라는 데이터가 있다. 이들을 묶어서 학생들, 이라고 표현하는 것이 배열이라고 할 수 있다.

이렇게 되면 인덱스 값으로 각 데이터에 접근 가능한데, 이를테면 학생1은 A, 학생2는 B 이런 식이다.

 

학창 시절 각 개인을 학생들이라고 묶어 각각 번호를 부여한 것과 비슷하다고 생각하면 되겠다.

 

컬렉션 데이터 타입?

연관된 데이터를 하나의 변수로 관리하는 방법

Array, Set, Map, List

 

1.  코틀린의 배열(Array)

 

 코틀린은 배열과 리스트 두 자료형을 모두 지원한다. 배열의 특징은 아래와 같다.

 

코틀린 배열의 특징

 

 초기화와 동시에 크기가 정해짐

 정적 타입(크기가 정해지면 메모리가 해제되지 않음, 즉 정해진 공간을 항시 차지)

 메모리 공간에 연속적으로 저장

 인덱스를 통하여 값에 접근 가능

 

그렇다면 코틀린에서 배열은 어떻게 선언하고 초기화할까?

 

코틀린 배열의 선언 및 초기화 방법

var 배열이름 : Array<배열에 담기는 값의 타입> = Array<배열에 담기는 값의 타입>(배열의 크기){초기값}

//배열의 크기는 생략 가능

or

var 배열이름 : Array<배열에 담기는 타입> = arrayOf()

//타입 역시 값으로 유추되면 생략 가능

or

var 배열이름 = intArrayOf()//int형 배열

var 배열이름 = doubleArrayOf()//double형 배열

... etc

 

*배열 생성 예시

코틀린 배열 생성

위 코드를 보면 다양한 타입의 배열이 선언 가능하며, 객체의 배열 역시 선언 가능함을 알 수 있다.

또한 배열은 인덱스를 통한 접근이 가능하다.

 

*인덱스를 통한 값 접근

배열 인덱스를 통한 접근

 

*plus()함수

배열에 plus함수를 이용하면 배열의 끝에 값을 추가할 수 있다. 그런데 앞서 배열은 사이즈가 변하지 않는다고 했다. 그렇담 이 함수는 어떻게 작동할까?

 

사용법

새 배열 = 기존배열.plus(추가할 값)

 

쉽게 말하면 기존 배열의 끝에 값을 추가한 새 배열을 만든다. , 기존 배열의 크기는 변하지 않는다는 것이다.

아래의 코드에서 주석 처리된 부분을 보면,

코틀린 배열 plus()메서드

plus를 사용한 배열1의 사이즈는 그대로임을 알 수 있다.

 

2. 코틀린의 리스트(List)

 

 리스트 역시 배열과 마찬가지로 유사한 자료형을 모아놓은 형태이다. 리스트와 배열은 사뭇 비슷하나 약간의 차이가 있다.

리스트의 특징은 아래와 같다.

 

코틀린 리스트의 특징

 순서가 있는 데이터 집합, 데이터 중복 허용

 읽기 전용 List와 수정 가능한 MutableList 존재

 메모리 공간에 불연속적으로 저장

 

이 중 리스트와 배열의 가장 큰 차이점은 메모리 공간에 연속적으로 할당되느냐 불연속적으로 할당되느냐라고 할 수 있겠다.

 

코틀린 리스트 선언 및 초기화 방법

var 리스트이름 : Array<배열에 담기는 타입> = listOf() //읽기전용, immutable list

var 리스트이름 : Array<배열에 담기는 타입> = mutableListOf() //수정 가능, mutable list, add()메서드로 값 추가 가능

 

*코틀린 리스트 예시

코틀린 리스트 예시

*Any타입은 모든 값을 대입 할 수 있는 최상위 타입

 

위 코드는 1. 인트를 담는 리스트 생성, 2. 다양한 자료형을 담는 리스트 생성 3. 수정 가능한 리스트 생성 예시이다. 

마지막으로 list에 add함수를 사용해 16을 넣는다. 그 후 리스트의 3번 인득스(4번째)를 출력해본다.

결과값은 아래와 같다. 

즉, add함수가 제대로 동작하는 것을 볼 수 있다.

댓글