2020. 6. 23. 17:10ㆍAndroid/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 |