Posts 이것이 안드로이드다 with 코틀린 #1 코틀린 기본문법: 4. 배열과 컬렉션
Post
Cancel

이것이 안드로이드다 with 코틀린 #1 코틀린 기본문법: 4. 배열과 컬렉션

Chapter 03. 코틀린 기본문법

4 배열과 컬렉션

배열

1
var 변수 = Array(개수)

배열 객체는 기본 타입 뒤에 Array를 붙여서 만든다.

1
2
3
4
5
var students = IntArray(10)
var longArray = LongArray(10)
var CharArray = CharArray(10)
var FloatArray = FloatArray(10)
var DoubleArray = DoubleArray(10)

문자 배열에 빈 공간 할당하기

String은 기본 타입이 아니기 때문에 StringArray는 없지만 다음과 같이 빈 문자열로 된 배열 공간을 할당할 수 있다.

1
var stringArray = Array(10, {item->""})

값으로 배열 공간 할당하기

arrayOf() 함수를 사용해서 String 값을 직접 할당할 수도 있다.

1
var dayArray = arrayOf("MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN")

배열에 값 입력하기

  • 배열명[인덱스] = 값
  • 배열명.set(인덱스, 값)

배열에 있는 값 꺼내기

  • 배열명[인덱스]
  • 배열명. get(인덱스)

컬렉션

  • 동적 배열: 배열과 다르게 공간의 크기를 처음 크기로 고정하지 않고 임의의 개수를 담을 수 있기 때문이다.
  • 종류: 리스트(List), 맵(Map), 셋(Set)

리스트(List)

  • 저장되는 데이터에 인덱스를 부여한 컬렉션
  • 중복된 값을 입력할 수 잇다.
  • 뮤터블(Mutable) 접두어를 통해 동적으로 리스트를 사용한다.
  • 접두어가 없는 리스트는 잘 사용하지 않는다.
1
var list = mutableListOf("MON", "TUE", "WED")
  • 리스트 생성하기: mutableListOf()

    1
    
    var mutableList = mutableListOf("MON", "TUE", "WED")
    
  • 리스트에 값 추가하기: add(추가할값)

  • 리스트에 입력된 값 사용하기: get(인덱스)

  • 리스트값 수정하기: set(인덱스, 수정할값)

  • 리스트에 입력된 값 제거하기: removeAt(인덱스)

빈 리스트 사용하기

아무것도 없는 빈 리스트를 생성하면 앞으로 입력되는 데이터의 타입을 추론할 수 없다. 따라서 빈 컬렉션의 경우 데이터타입Of만으로 생성되지 않고 데이터타입을 직접적으로 알려주는 방법을 사용해야 한다.

mutableListOf<타입>()

1
2
var 변수명 = mutableListOf<컬렉션에 입력될 값의 타입>()
var stringList = mutableListOf<String>()

제네릭

  • 컬렉션이 사용하는 값의 타입을 지정하기 위한 도구
  • 컬렉션은 제네릭을 사용하지 않으면 생성할 수 없다.
  • 값으로 초기화할 때는 타입을 추론할 수 있기 때문에 제네릭을 쓰지 않아도 생성할 수 잇다.

  • 컬렉션 개수 가져오기: size

셋(Set)

  • 중복을 허용하지 않는 리스트(List)

  • 리스트와 유사한 구조이지만 인덱스로 조회할 수 없고, get 함수도 지원하지 않는다.

  • 빈 셋으로 초기화하고 값 입력하기

    1
    2
    3
    4
    5
    
    var set = mutableSetOf<String>()
    set.add("JAN")
    set.add("FEB")
    set.add("MAR")
    set.add("JAN") // 동일한 값은 입력되지 않는다.
    
  • 셋 모든 값 출력하기

    셋은 인덱스로 조회하는 함수가 없기 때문에 특정 위치의 값을 직접 사용할 수 없다.

    1
    
    Log.d("Collection", "Set 전체 출력 = ${set}")
    
  • 셋 삭제하기

    값이 중복되지 않기 때문에 값으로 직접 조회해서 삭제할 수 있다.

    1
    
    set.remove("FEB")
    

맵(Map)

  • 키(key)와 값(value)의 쌍으로 입력되는 컬렉션이다. 키는 마치 리스트의 인덱스와 비슷한데 리스트와는 다르게 키를 직접 입력해야 한다.
  • 제네릭으로 키와 값의 데이터 타입을 지정해서 맵을 생성한다.

  • 맵 생성하기

    1
    
    var map = mutableMapOf<String, String>
    
  • 빈 맵으로 생성하고 값 추가하기

    1
    2
    3
    
    var map = mutableMapOf<String, String>()
    map.put("키1", "값1")
    map.put("키2", "값2")
    

    키와 값을 추가할 때마다 리스트처럼 공간이 늘어난다.

  • 맵 사용하기

    1
    
    Log.d("CollectionMap", "map에 입력된 키1의 값은 ${map.get("1")}입니다.")
    
  • 맵 수정하기: put(키, 수정값)

    put 함수를 사용할 때 동일한 키를 가진 값이 있으면 키는 유지된 채로 그 값만 수정된다.

  • 맵 삭제하기: remove(키)

컬렉션 값의 단위 = 엘리먼트

컬렉션에 입력되는 값은 각각을 엘리먼트(Element)라고 한다. 값이라고 해도 되지만 맵을 지칭할 때 맵의 값(엘리먼트 자체)을 가르키는 건지, 엘리먼트의 값(실제 값)을 가르키는 건지 2개의 용어가 충돌할 수 있기 때문에 엘리먼트라고 이해하는 것이 좋다.

엘리먼트는 맵의 입력 단위인 키와 값을 합친 것을 말한다.

1
2
리스트 엘리먼트 = 리스트의 ()
 엘리먼트 = 맵의 (키와 )

이뮤터블 컬렉션

  • 이뮤터블 컬렉션은 기존 컬렉션에서 mutable 접두어가 제거된 형태로 사용한다.
1
var list = listOf("1", "2")
  • 한 번 입력된 값을 변경할 수 없기 때문에 addset 함수는 지원하지 않최초 입력된 값을 사용만 할 수 있다.
  • 요일 데이터 등 여러 개의 값을 중간에 수정하지 않고 사용할 필요가 있을 때 이뮤터블 컬렉션을 사용한다.
  • 이뮤터블 컬렉션을 저장할 때는 상수로 선언하고 상수명을 대문자로 표시하는 것이 좋다.
This post is licensed under CC BY 4.0 by the author.

모던 자바스크립트 #5.2. 숫자형

모던 자바스크립트 #5.3. 문자열

Loading comments from Disqus ...