[Kotlin][언어공부-8] Collection

2020. 6. 23. 17:10Android/Kotlin

 

Kotlin에서 Collections는 열거형 데이터를 관리하는 데 필수적인 클래스 집합이다. 

 

(List가 있는걸 보니 자바의 ArrayList 같은 걸 생각하면 되는 듯 하다.)

 

1. 읽기전용 List -> listOf. 항목의 데이터형을 혼합해도 됨

2. 수정가능 List -> mutableListOf 제너릭(<>) 데이터형 반드시 선언.add,remove 등 메소드

3. Map은 hashMapOf(키 to 값,...) 형식 

 

자바의 List개념과는 다르게 읽기 전용과 수정가능 리스트가 구분되는 듯 하다.

 

또한 map 선언이 특이한데 키 to 값 으로 선언하는건 처음 보는 형식이니 기억해 둘 필요가 있을것 같다.

 

 

 

1. listOf

읽기 전용 리스트다 .

읽기만 가능해서 추가 수정 삭제가 안된다. 그러면 선언할때만 값을 넣을 수 있다.

fun <T> listOf(vararg elements: T) : List<T> 

읽기 전용 리스트를 정의하고 리턴값은 List<T>를 리턴한다.

 

 

 

정말 좋다고 생각되는 점은 데이터 형에 관계없이 넣을 수 있다는 점이다.

 

자바라면 

  ArrayList<String> arStr = new ArrayList<String>();

arStr.add("하");

위처럼 리스트를 만들때 String형을 지정해주어 String 이외의 다른 것들은 add가 안된다.

 

코틀린에서는

val arStr = listOf(1,2,"하",4)

다른 데이터형이 들어가는걸 확인 할 수 있다.

또한 자바와 마찬가지로 리스트별로 여러가지 메소드도 존재하는데 간단하게 살펴보면

size -> list.size 로 크기를 가져올 수 있다.

contains() -> list.contains("하")  리스트에 값이 있는지 비교한다.

indexOf() -> list.indexOf(2)) 위치를 가져온다.

리스트[인덱스] -> list[2]  해당위치의 값을 가지고온다.

 

 

위의 메소드만 봐도 엄청 다양한걸 알수있다. size는 넘어가고라도 

자바라면 list를 for문 돌려서 찾아야했던 contains의 존재가 눈에 띄인다.

또한 list.get(i) 로 쓰는것이 아닌 배열과 마찬가지로 list[i] 로 값을 가져와서 사용한다.

 

 

 

2. mutableList

읽고 쓰기 가능한 리스트이다.

fun <T> mutableListOf(): MutableList<T> 리턴값은 MutableList<T>

add,remove가 가능한 점에서 자바의 arrayList랑 비슷하다고 생각된다. 역시나 좋은점은 다양한 데이터 형을 사용할 수 있고, 자바보다 유연한 기능을 제공한다.

val arStr = mutableListOf(1,2,"하",4)

add -> 값을 추가한다 첫번째 파라미터로 추가할 값의 위치를 지정할 수도 있다. list.add(1,"여기다");

removeAt(위치) -> list.remove("하")  list.removeAt(1); 리스트에 값을 삭제한다. 위치는 removeAt 값 삭제는 remove

addAll() -> 콜렉션을 더한다. 라고 설명이 되어있는데 자바로는 리스트안에 리스트를 넣는 개념인 것 같은데 그냥 JsonArray 안에 JSONObject를 넣는다고 생각해도 될것 같다... 아직 소스를 보기 전까진 정확하게는 모르겠다

리스트[인덱스] -> list[2]  해당위치의 값을 가지고온다.

3. hashMapOf

map 형식

넣는 방식이 특이하다 hashMapOf("A" to 1,"B" to 2) 와 같이 사용한다 A는 키 값, to~ 는 value 값을 의미한다.

 

 

 

// 읽기전용 List -> listOf . 항목의 데이터형을 혼합해도 됨.

//수정가능 List-> mutableListOf. 제너릭<> 으로 데이터형을 반드시 선언
//Map은 hashMapOf(키 to 값,...) 형식
fun main(args: Array<String>) {
    //읽기 전용 <T> 를 안쓰면 여러가지의 형을 쓸 수 있음.
    val lst = listOf (1,"A","12.00f",12.00f,false,true)
    for ( i in 0 .. lst.size-1){
        println(lst.get(i).toString())
    }
    println (">")

    var listEditable = mutableListOf<String> ()
    listEditable.add("A")
    listEditable.add("b")
    listEditable.add("C")
    listEditable.add("D")

    for ( s in listEditable)  {
        println("s -> $s")
    }

    var m  = hashMapOf("A" to 1,"B" to 2)
    println (m["A"])

}
반응형

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

[Kotlin][언어공부-9] 예외처리  (0) 2020.06.25
[Kotlin][언어공부-7] label  (0) 2020.06.22
[Kotlin][언어공부-6] 제어문  (1) 2020.06.18
[Kotlin][언어공부-5] function  (0) 2020.06.16
[Kotlin][언어공부-4] Any형  (0) 2020.06.10