[Kotlin] 배열

sundays·2023년 3월 21일
0

kotlin

목록 보기
19/19

데이터를 연속적으로 나열한 상태

생성

// 1. 생성
var arr1 = arrayOf(1, 2, 3)
var arr2 = Array(2, { 100 })

// 2. 빈 배열
var nullarr = arrayOfNulls<String>(100)

// 3. 다차원 배열
val arr = arrayOf(arrayOf(1, 2, 3), arrayOf(4, 5, 6));

// 4. 혼합 배열
var mixArray = arrayOf(4, 2, 3, "tiger", false)

표현식을 통한 생성

// 2씩 곱해지는 정수 짝수 5개 배열
val arr = Array(5, {i -> i*2})

많은 양의 배열 생성

// 1000개 null로 채워진 정수 배열
var a = arrayOfNulls<Int>(1000)

// 0으로 채워진 배열
var a = Array(1000,{0})

특정 클래스로 객체 배열 생성

var a = Array(1000, {i -> myClass(i) });

특정 자료형 제한

  • arrayOf<자료형>()
  • 자료형이름 + ArrayOf()
    • charArrayOf(), booleanArrayOf(), longArrayOf(), shortArrayOf(), byteArrayOf(), intArrayOf()
    • ubyteArrayOf(), ushortArrayOf(), uintArrayOf(), ulongArray()

접근

package kotlin

public class Array<T> {
    public inline constructor(size: Int, init: (Int) -> T)

    public operator fun get(index: Int): T

    public operator fun set(index: Int, value: T): Unit

    public val size: Int

    public operator fun iterator(): Iterator<T>
}

인덱스 접근

  • arr.get(index) -> value = arr[index]
  • arr.set(index,value) -> arr[index] = value

출력

  • Arrays.toString()
  • 다차원 배열에서는 deepToString() 사용

추가

배열이 일단 정의되면 고정되는데, 새로 할당하는 방법으로 추가하나 잘라 낼 수 있습니다

  • array.plus()
val arr1 = inArrayOf(1,2,3,4,5) // 고정된 배열

// 하나의 요소를 추가한 새 배열 생성
var arr2 = arr.plus(6)
println("arr2 : ${arr2.toString(arr2)}")

범위

  • array.sliceArray()
// 필요한 범위를 잘라내 새 배열 생성
val arr3 = arr.sliceArray(0..2)

println(arr3)

그 외

val array = intArrayOf(1,2,3,4,5)

// 1. 가장 첫번째 요소
println(array.first()) // 1

// 2. 가장 마지막 요소
println(array.last()) // 5

// 3. 인덱스 출력
println(array.indexOf(2)) // 1

// 4. 평균
println(array.average()) // 3.0

// 5. 요소 개수
println(array.count()) // 5

// 6. 포함 여부 1
println(array.contains(6)) // false

// 7. 포함 여부 2
println(4 in array) // true

순환

// 1. foreach
array.forEach {
	e -> println("$e")
}

// 2. forEachIndexed (i는 인덱스, e는 요소)
array.forEachIndexed {
	i, e ->
    	println("$i : $e")
}

// 3. Iterator
val iter = array.iterator()
while (iter.hasNext()) {
	prinln(iter.next())
}
profile
develop life

0개의 댓글