달달한 스토리

728x90
반응형

 

오늘 벌써 글만 3개째이다.

 

공부량이 많은 만큼 좋다고 생각한다.

 

오늘도 역시 깡샘의 안드로이드를 출처로 한다.

 

오늘 배울 것은 코틀린의 컬렉션 타입이다.

 

Array - 배열 표현

 

코틀린의 배열은 Array라고 표현하며,

 

첫 번째 매개변수는 배열의 크기를 지정하며,

 

두 번째 매개변수는 초기값을 지정하는 함수이다.

 

<int>(size: Int, init: (int) -> T)

 

예를 들어 이렇게 선언할 수 있다.

 

val data: Array<Int> = Array(3, { 0 })

 

배열의 데이터에 접근할 때는 대괄호([])나 set(), get() 함수로 값을 넣어주거나 가져올 수 있다.

 

fun main() {
  val data1: Array<Int> = Array(3, { 0 })
  data1[0] = 10
  data1[1] = 20
  data1.set(3, 30)
  
  
  println(
  """
  array size : ${data1.size}
  array data : ${data1[0]}, ${data1[1]}, ${data1.get(2)}
  """
  )
  
  
  ///결과
  
  //array size : 3
  //array data : 10, 20, 30

}

기초 타입의 배열

 

보통은 Array<Int> 이런 식으로 제네릭 사이에 타입을 넣어 사용을 합니다.

 

하지만 데이터가 기초 타입이면 Array를 사용하지 않고, 기초 타입을 나타내는 클래스를

 

사용할 수 있습니다.

 

BooleanArray, ByteArray, CharArray, DoubleArray, FloatArray, IntArray, LongArray, ShortArray가 있습니다.

 

val data1: IntArray = IntArray(3, { 0 })
val data2: BooleanArray = BooleanArray(3, { false })

 

또한, arrayOf()라는 함수를 사용하게 되면 선언할 때 값을 할당할 수 있습니다.

 

fun main() {
  val data1 = arrayOf<Int>(10, 20, 30)
  
  
  println(
  """
  array size : ${data1.size}
  array data : ${data1[0]}, ${data1[1]}, ${data1.get(2)}
  """
  )
  
  
  ///결과
  
  //array size : 3
  //array data : 10, 20, 30

}

 

arrayOf() 함수도 기초 타입을 대상으로 하는

booleanArrayOf(), byteArrayOf(), charArrayOf(), doubleArrayOf(),

floatArrayOf(), intArrayOf(), longArrayOf(), shortArrayOf()가 있습니다.

 

val data1 = intArrayOf(10, 20, 30)
val data1 = booleanArrayOf(true, false, true)

 

List, Set, Map

 

이 세가지는 Collection 인터페이스를 타입으로 표현한 클래스이며, 컬렉션 타입 클래스라고 합니다.

 

  • List: 순서가 있고, 데이터의 중복을 허용한다
  • Set: 순서가 없고, 데이터의 중복을 허용하지 않는다.
  • Map: 키와 값으로 이루어져 있고, 순서가 없으며, 키의 중복을 허용하지 않는다.

Collection 타입의 클래스는 가변(Mutable) 클래스와 불변(Immutable) 클래스로 나뉩니다.

 

가변 클래스는 초깃값을 대입한 이후에도 값을 추가하거나 변경할 수 있고,

 

불변 클래스는 초깃값을 대입한 이후에는 더 이상 변경할 수 없는 클래스입니다.

 

List는 MutableList, Set은 MutableSet, Map은 MutableMap이 있습니다.

 

구분 타입 함수 특징
List List listOf() 불변
MutableList mutableListOf() 가변
Set Set setOf() 불변
MutableSet mutableListOf() 가변
Map Map mapOf() 불변
MutableMap mutableMapOf() 가변

 

listOf() 함수로 초깃값을 넣어줄 수도 있습니다.

 

배열과 마찬가지로 대괄호나 set, get함수를 사용할 수 있습니다.

 

fun main() {
  var data = listOf<Int>(10, 20, 30)
  println(
  """
  array size : ${data1.size}
  array data : ${data1[0]}, ${data1[1]}, ${data1.get(2)}
  """
  )
  
  
  ///결과
  
  //array size : 3
  //array data : 10, 20, 30
}

mutableListof()는 데이터를 추가하거나 변경할때, add() 나 set()을 이용할 수 있습니다.

 

반응형

 

fun main() {
  var data = mutableListOf<Int>(10, 20, 30)
  data.add(3, 40)
  data.set(0, 50)
  
  println(
  """
  array size : ${data1.size}
  array data : ${data1[0]}, ${data1[1]}, ${data1.get(2)}, ${data1.get(3)}
  """
  )
  
  
  ///결과
  
  //array size : 4
  //array data : 50, 20, 30, 40
}

 

Map은 조금 형태가 다릅니다.

 

키와 값으로 이루어진 데이터 집합이기 때문에

 

Pair 객체를 이용할 수 있고, 혹은 (키 to 값) 형태로 사용합니다.

 

fun main() {
  var map = mapOf<String, String>(Pair("one", "Hello"), "two" to "world")
  println(
  """
  
  map size : ${map.size}
  map data : ${map.get("one"), ${map.get("two")}}
  """
  )
  
  //결과
  //map size : 2
  //map data : hello, world
}

이런 식으로 4가지의 컬렉션 타입에 대해 알아보았습니다.

728x90
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading