728x90
반응형
- 컨테이너는 컬렉션이라고도 한다. 기본적인 컨테이너가 필요할 때 보통 List를 사용한다.
- List는 표준 코틀린 패키지에 들어있기 때문에 import가 필요없다.
- List 만드는 법
- 초기화 값과 함께 호출
fun main() {
val ints = listOf(1,3,5,7,9)
}
- List의 타입은 추론할수도, 타입 파라미터를 통해 명시할수도 있다.
- 단, 처음에 아무 원소도 초기값으로 넣지 않고 생성한다면 타입 파라미터를 명시해줘야 한다. (뭘 담을 건지 알려줘야 함)
fun main() {
//타입을 추론한다.
val numbers = listOf(1, 2, 3)
val strings = listOf("one", "two", "three")
//타입을 명시한다.
val numbers2: List<Int> = listOf(1, 2, 3)
val strings2: List<String> = listOf("one", "two", "three")
}
- 반환값의 타입이 타입 파라미터를 포함할 수도 있다.
//반환할 타입을 추론한다.
fun inferred(p: Char, q: Char) = listOf(p, q)
//반환할 타입을 명시한다.
fun explicit(p: Char, q: Char): List<Char> = listOf(p, q)
- 읽기 전용 List / 가변 List
- 읽기 전용: listOf()
- 가변: mutableListOf()
- add(), addAll() 을 사용해 MutableList에 원소나 다른 컬렉션의 원소들을 추가할 수 있다.
- += 로 추가도 가능
fun main() {
val list = mutableListOf<Int>()
list.add(1)
list.addAll(listOf(2, 3))
list += 4
list += listOf(5, 6)
}
- MutableList를 List로 (읽기 전용으로) 취급할 수는 있다. (내용 변경은 불가능) 하지만 애초에 읽기 전용인 List를 MutableList로 취급하는 것은 불가능하다.
- += 연산자를 쓰면 불변 리스트가 마치 가변 리스트인 것처럼 보인다.
- list는 var 이기 때문
- 근데 애초에 불변 list를 val에 대입하면 불변이다..........!
fun main() {
var list = listOf('X') //불변리스트
list += 'Y' //근데 가변인가....?
}
728x90
반응형
'코틀린' 카테고리의 다른 글
아토믹 코틀린 - 객체 - 집합 (0) | 2023.10.02 |
---|---|
아토믹 코틀린 - 객체 - 가변 인자 목록 (0) | 2023.10.02 |
아토믹 코틀린 - 예외(Exception) (0) | 2023.10.02 |
아토믹 코틀린 - 객체 - 패키지 (0) | 2023.10.02 |
아토믹 코틀린 - 객체 - 가시성 제한하기 (0) | 2023.10.02 |