List는 순서에 따라 정렬된 요소를 가지는 컬렉션으로 가장 많이 사용되는 컬렉션 중에 하나이다.
헬퍼 함수를 통해서 우리는 List를 만들어서 사용할 수 있다.
헬퍼 함수 : List와 같은 컬렉션은 특정 함수의 도움을 통해서 생성하는데 이때 사용하는 함수를 헬퍼함수라고 한다.
var list = listOf(1, 2, 3)
println(list)
// [1, 2, 3]
list = arrayListOf(1, 2, 3)
println(list)
// [1, 2, 3]
list = mutableListOf(1, 2, 3)
println(list)
// [1, 2, 3]
불변형 이지만 mixedTypes 형식 매개변수가 <Any>를 가진다.
var list2 = listOf("Hello", 1, 2.445, 's')
// [Hello, 1, 2.445, s]
println(list2.javaClass)
// class java.util.Arrays$ArrayList
1. 일반적인 for문 in 사용하기
list = mutableListOf(1, 2, 3, 4, 5, 6, 7)
for(item in list) {
println(item)
}
// 1
// 2
// 3
// 4
// 5
// 6
// 7
2. indices 사용
index를 통해서 list를 접근하기 위해서는 .indices멤버를 추가하면 됩니다.
// 인덱스를 통한 접근
for(index in list.indices) {
println("list[$index] = ${list[index]}")
}
// list[0] = 1
// list[1] = 2
// list[2] = 3
// list[3] = 4
// list[4] = 5
// list[5] = 6
// list[6] = 7
emptyList<>()를 사용할 수 있다. 이때는 반드시 형식 매개변수를 지정한다.
val emptyList : List<String> = emptyList<String>();
println(emptyList)
// []
listOfNotNull()로 초기화하면 null을 제외한 요소만 반환해 List를 구성할 수 있다.
// null이 아닌 요소만 출력
val nonNullsList: List<Int> = listOfNotNull(2, 45, null, 5, null)
println(nonNullsList)
// [2, 45, 5]
Collection 인터페이스의 메소드를 오버라이딩 해서 구현을 하고있다.
var names: List<String> = listOf("one", "two", "three")
println(names.size) // 리스트 사이즈
println(names.get(0)) // 리스트 요소 가져오기
println(names.indexOf("three")) // 해당 value와 일치하는 인덱스를 반환
println(names.contains("two")) // 해당 value를 포함하고 있는지 여부 확인
// 3
// one
// 2
// true
코틀린에서는 get()을 굳이 쓰지 않고 배열처럼 []를 통해서도 값을 집어넣거나 불러올 수 있습니다.
println(names[0])
// one
가변형 arrayListOf()
val stringList = arrayListOf<String>("Hello", "Kotlin", "Java")
stringList.add("Java")
stringList.remove("Hello")
println("stringList : ${stringList}")
// stringList : [Kotlin, Java, Java]
가변형 mutableListOf()
mutableList.add("Ben")
mutableList.removeAt(1)
mutableList[0] = "Sean"
println(mutableList)
// [Sean, Cheolsu, Ben]
val mutableListMixed = mutableListOf("Android", "Apple", 5, 6, 'X')
println(mutableListMixed)
// [Android, Apple, 5, 6, X]
val names = listOf("one", "two", "three")
val mutableNames = names.toMutableList()
mutableNames.add("four")
println("mutableNames : ${mutableNames}")
// mutableNames : [one, two, three, four]
List와 배열 array의 차이