Til. 코틀린 컬렉션 그리고 반복문

Devback·2021년 1월 5일
0

Kotlin

목록 보기
3/8
post-custom-banner

배열과 컬렉션의 가장 큰 차이

여러 개의 값을 담을 수 있는 대표적인 자료형 배열(array)은 값을 담기 전에 먼저 배열 공간의 개수를 할당하거나 초기화 시에 데이터를 저장해두면 데이터의 개수만큼 배열의 크기가 결정된다. 먼저 개수를 정해놓고 사용해야 하며 개수를 추가하거나 제거할 수 없다.

반대로 컬렉션은 배열과는 다르게 공간의 크기를 처음 크기로 고정하지 않고 임의의 개수를 담을 수 있다.

List 🎵 

리스트는 저장되는 데이터에 인덱스를 부여한 컬렉션이며 중복된 값을 입력할 수 있다.

  var list = mutableListOf<String>("mon", "tue", "wed")
        list.add("thr")
        list.removeAt(3)
        list.set(1, "fri")

빈 리스트 사용하기
var 변수명 = mutableListOf<타입>()

var stringList = mutableListOf<String>()
stringList.add("월")
stringList.add("화")

컬렉션 갯수 가져오기

mutableList.size

Set 🎶

컬렉션 Set은 중복이 허용되지 않는 리스트이다. 그렇기 때문에 인덱스로 조회할 수 없고 get 함수도 지원하지 않는다.

package com.example.prac1

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)


        var set = mutableSetOf<Int>(1, 2, 3, 4)

        set.add(5)
        set.add(6)
        set.add(8)
        Log.d("seta", "$set") //  [1, 2, 3, 4, 5, 6, 8]
        set.remove(1)
        Log.d("seta", "$set") //  [2, 3, 4, 5, 6, 8]

    }
}

Map 🎶

맵(map)은 키(key)와 (value)의 쌍으로 입력되는 컬렉션이다. 맵의 키는 마치 리스트에서의 인덱스와 비슷하다.

var map = mutableMapOf<String, String>()
map.put("키1", "키2")
map.put("n1", "jun")
map.put("n2", "chan")
map.put("n3", "hello")
Log.d("map", "$map") // {n1=jun, n2=chan, n3=hello}
map.remove("키2")

For 반복문 ♾


package com.example.prac1

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // 일반적인 반복문
        for (index in 1..10){
            Log.d("for", "${index}")
        }

        // 일반적인 반복문
        for (index in 1 until 10) {
            Log.d("for2", "${index}")
        }

        var array = arrayOf<String>("jan", "feb", "mar", "apr", "may", "jun")

        // 배얄 사이즈만큼 반복시키기
        for(index in 0 until array.size) {
            Log.d("for3", "${array.get(index)}")
        }

        // 건너뛰기
        for(index in 0..100 step 3) {
            Log.d("for4", "${index}")
        }
        
        //감소시키기
        for(index in 10  downTo 0) {
            Log.d("down", "$index")
        }

        // 배열 반복
        for(arr in array) {
            Log.d("arr", "${arr}")
        }
    }
}

while문 continue문, break문 💲


package com.example.prac1

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)



        // 일반적인 while문
        var current = 1
        var until = 12
        while(current < until) {
            Log.d("while", "현재 값은 ${current}입니다")
            current = current + 1
        }

        // do while 문
        var game = 1
        val match = 6
        do {
            Log.d("while", "${game}게임 이겼습니다. 우승까지 ${match - game}남았습니다")
            game += 1
        } while (game < match)
        
        // 반복문 안에서 break를 만나면 반복문을 탈출하게 해준다. 
        for(index in 1..10) {
            Log.d("break", "${index}")
            if(index > 5) {
                break
            }
        }
    
        // 반복문 내에서 continue를 만나면 continue 다음 코든느 실행하지 않고 반복문의 처음으로 돌아간다.
        for(except in 1..10) {
            if( except > 3 && except <  8){
                continue
            }
            Log.d("continue", "$except")
        }
     }
}

while문은 조건이 맞으면 계속해서 반복을 한다. 따라서 while문 블록 안에서 조건을 추가해줘야 한다.
do while문은 while문과 가장 큰 차이는 do while문은 조건이 맞지 않아도 처음 한 번은 실행이 된다.

break문

반복문 내에서 break문을 만나면 반복문을 탈출하게 된다. 반복문을 완전히 벗어나기 위해서 사용한다.

continue문

반복문 도중에 다음 반복문으로 넘어가기 위해서 사용한다. break문 처럼 완전히 벗어나지는 않고 조건에 따라 실행 여부가 결정된다.

profile
나랑 같이 개발할 사람🖐
post-custom-banner

0개의 댓글