쏭식
Ssongcode;
쏭식
전체 방문자
오늘
어제
  • 분류 전체보기 (106)
    • JAVA (21)
      • Basic (21)
    • Kotlin (14)
      • Basic (14)
    • Android (64)
      • Basic (24)
      • JETPACK (30)
      • Compose (8)
      • 파고들기 (2)
    • Project (4)
    • etc (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Adapter
  • 자바
  • 상속
  • 코틀린코테
  • compose
  • 백준
  • 자료구조
  • livedata
  • Android
  • Jetpack
  • 코딩테스트
  • 메소드
  • Kotlin
  • 변수
  • 리사이클러뷰
  • 코드업100제
  • 배열
  • 코틀린
  • Room
  • workmanager
  • ViewModel
  • 프로젝트회고
  • 객체지향
  • AAC
  • DataBinding
  • mvvm
  • 알고리즘
  • 코테
  • 컴포즈
  • 기초100제

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
쏭식

Ssongcode;

[Kotlin/Basic] 코틀린에서의 배열과 컬렉션
Kotlin/Basic

[Kotlin/Basic] 코틀린에서의 배열과 컬렉션

2022. 9. 6. 23:59

1. 배열

보통 배열보다는 리스트를 사용하곤한다. 그래도 간단하게 자바와 비교하며 문법을 체크해보자.

val array = arrayOf(100, 200)
//0부터 마지막 index까지 for문을 돌림
for(i in array.indices){
    println("$i ${array[i]}")
}
//쉽게 추가할 수 있음
array.plus(200)
//인덱스와 밸류를 한 번에 도출함
for((idx, value) in array.withIndex()){
    println("${idx}, ${value}!")
}

배열도 마찬가지로 가변인지 불변인지 판별하는 val, var을 적어주어야하고, arrayOf( )라고 적는다.

이를 for문을 통해 배열안에 있는 값들을 출력할 때에는

array.indices를 통해 출력할 수 있다.

indices가 무엇인지 들어가보면 다음과 같다.

public val <T> Array<out T>.indices: IntRange
    get() = IntRange(0, lastIndex)

즉, array에 있는 0번째 인덱스부터 마지막 인덱스까지의 범위를 의미한다.

따라서 i번째, array[i]값 처럼 출력이 가능하다!

또한, withIndex()로 인덱스값과 value값을 동시에 출력할 수도 있다!!

2. List, Set , Map

List

List, Set, Map은 이외에 말고도 Mutable이란 것을 붙여 활용할 수 있다.

Mutable은 컬렉션에 element를 추가, 삭제할 수 있는 가변을 의미하고,

아무것도 붙이지 않았을 때에는 추가, 삭제할 수 없는 불변을 의미한다.

 

하지만!! 불변컬렉션이라 하더라도 Reference Type인 Element의 필드는 바꿀 수 있다.

출처 : 최태현 강사님의 코틀린 강의

위의 예시를 살펴보자.

새로운 Money를 넣을 수 없고, 기존에 있던 Money를 삭제할 수도 없지만

Money에 접근해서 그 안에 있는 필드인 price인 값은 바꿀 수 있다!!

val numbers = listOf(100, 200)
val emptyList = emptyList<Int>() //비어있는 리스트를 만들 때는 타입을 적어주어야함

//바로 대괄호로 가져올 수 있음
println(numbers[0])

for(number in numbers){
    println(number)
}

for((idx, value) in numbers.withIndex()){
    println("${idx}, ${value}!")
}

리스트에서의 주의할 점은 emptyList를 만들때에는 무슨 타입인지 모르기 때문에 타입을 적어주어야한다!

for문을 통한 출력은 배열과 거의 같다고 볼 수 있다!

//가변리스트
val numbers1 = mutableListOf(100, 200)
numbers1.add(300)

가변리스트는 위와 같이 구현하며, add를 통해 값을 추가할 수 있다.

 

SET

Set의 가변으로는 MutableSetOf라고 적고, 기본 구현체는 LinkedHashSet이다. 사용은 리스트와 같다.

 

MAP

//map
val oldMap = mutableMapOf<Int, String>()
//가변맵이기 때문에 (key, value)를 넣을 수 있다.
//java처럼 put을 사용할 수 있고, 밑에처럼 map[key] = value를 쓸 수도 있다.
oldMap[1] = "MONDAY"
oldMap[2] = "MONDAY"

위와 같이 값을 정의하고 추가할 수 있지만 밑처럼 to를 통해 중위호출하여 값을 정의할 수 있다.

mapOf(1 to "MONDAY", 2 to "TUESDAY")

for문을 통한 출력은 array에서는 indices와, withIndex()가 있었지만

map에서는 keys와 entries가 존재한다!

for(key in oldMap.keys){
    println(key)
    println(oldMap[key])
}

for((key, value) in oldMap.entries){
    println(key)
    println(value)
}

3. 컬렉션의 null 가능성

/*
컬렉션의 null가능성
List<Int?> 리스트에 null이 들어갈 수 있지만, 리스트는 절대 null이 아님
List<Int>? 리스트에는 null이 들어갈 수 없지만, 리스트는 null일 수 있음
List<Int?>? 리스트에 null이 들어갈 수도 있고, 리스트가 null일 수도 있음
 */

위와 같이 세 가지의 경우가 있다. 이 경우가 좀 헷갈릴 수 있으니 꼭 알고 넘어가자!!

 

 

GitHub - SsongSik/Kotlin_Java_Practice: Practice kotlin grammar compared to Kotlin and Java.

Practice kotlin grammar compared to Kotlin and Java. - GitHub - SsongSik/Kotlin_Java_Practice: Practice kotlin grammar compared to Kotlin and Java.

github.com

 

저작자표시 (새창열림)

'Kotlin > Basic' 카테고리의 다른 글

[Kotlin/Basic] 코틀린에서의 다양한 함수  (1) 2022.09.16
[Kotlin/Basic] 코틀린에서의 중첩클래스  (0) 2022.09.01
[Kotlin/Basic] 코틀린에서의 object 키워드  (0) 2022.08.31
[Kotlin/Basic] 코틀린에서의 접근제어  (0) 2022.08.23
[Kotlin/Basic] 코틀린에서의 상속  (0) 2022.08.22
    'Kotlin/Basic' 카테고리의 다른 글
    • [Kotlin/Basic] 코틀린에서의 다양한 함수
    • [Kotlin/Basic] 코틀린에서의 중첩클래스
    • [Kotlin/Basic] 코틀린에서의 object 키워드
    • [Kotlin/Basic] 코틀린에서의 접근제어
    쏭식
    쏭식

    티스토리툴바