Array은 선언할때 고정된 크기를 가지고 수정 가능
List는 선언할때 크기가 고정되지 않고 가변으로 동작되며 List<T> 의 경우 Inmutable로 삽입/수정/삭제 불가하며 MutableList를 사용하면 가능하다
[Array와 List 종류]
IntArray
DoubleArray
FloatArray
BooleanArray
Array<T>
List<T>
MutableList<T>
[IntArray]
var intArray: IntArray = IntArray(5)
intArray.set(0, 10)
intArray.set(1, 20)
intArray.set(2, 30)
intArray[3] = 40
intArray[4] = 50
Log.d("TAG", "intArray: ${intArray[4]}")
Log.d("TAG", "intArray: ${intArray.get(4)}")
[Array<T>]
초기화 방법
var arr0: Array<Int> = Array<Int>(5) { 0 }
var arr1: Array<Int> = arrayOf<Int>(1,2,3,4,5)
arr1[0] = 2 // 수정가능
[List<T>]
List<T> 은 위에서 설명한 대로 수정이 불가능함.
초기화 방법
var list0: List<Int> = List<Int>(5) { 0 }
var list1: List<Int> = listOf<Int>(1,2,3,4,5)
[MutableList<T>]
List<T> 가 삽입/수정/삭제가 불가하기 때문에 가능하게 하기 위해서는 MutableList<T> 사용해야됨.
초기화 방법
var numberMutableList: MutableList<Int> = mutableListOf<Int>()
사용방법
var numbers = listOf<Int>(1,2,3,4,5)
var numberMutableList: MutableList<Int> = mutableListOf<Int>()
numberMutableList.addAll(0, numbers)
Log.d("TAG", "MutableList Size : ${numberMutableList.size} / ${numberMutableList}")
결과
D/TAG: MutableList Size : 5 / [1, 2, 3, 4, 5]
[Array<T> -> MutableList<T>]
Array를 MutableList 에 대입시 초기화 단계에서 포인트 * 사용해서 초기화 가능함.
var arrayObjects: Array<TestClass> = arrayOf(testClass1, testClass2, testClass3)
var mutableClassList1: MutableList<TestClass> = mutableListOf<TestClass>(*arrayObjects)
for(i: Int in 0 until mutableClassList1.size) {
mutableClassList1[i].index += 1
Log.d("Test Class1", "TestClass1 Index : ${mutableClassList1[i].index}")
}
결과
D/Test Class1: TestClass1 Index : 2
D/Test Class1: TestClass1 Index : 3
D/Test Class1: TestClass1 Index : 4
[List<T> -> MutableList<T>]
var classList: List<TestClass> = listOf(testClass1, testClass2, testClass3)
var mutableClassList2: MutableList<TestClass> = mutableListOf<TestClass>()
mutableClassList2.add(testClass1)
mutableClassList2.add(testClass2)
mutableClassList2.add(testClass3)
또는
mutableClassList2.addAll(0, classList)
for(i: Int in 0 until mutableClassList2.size) {
Log.d("Test Class2", "TestClass Index2 : ${mutableClassList2[i].index}")
}
[결과]
D/Test Class2: TestClass Index2 : 2
D/Test Class2: TestClass Index2 : 3
D/Test Class2: TestClass Index2 : 4
'Android(Kotlin)' 카테고리의 다른 글
[Kotlin] windowManager.defaultDisplay.getSize DEPRECATION 대응 (1) | 2024.12.18 |
---|---|
[Kotlin] AsyncTask Deplecated Observable.fromCallable() 로 대체하기 (0) | 2024.12.02 |
[Kotlin] RxJava / retrofit2 이용한 API 서버 연동 (0) | 2024.11.28 |
[Kotilin] 연산자 (Operators) (0) | 2024.11.13 |
[Kotlin] for / foreach / while / do while (0) | 2024.10.04 |