오늘은 리스트를 선언하는 방법 중 하나로 buildList
에 대해 소개하고자 한다.
개발을 하다보면 리스트를 다룰 일이 많다.
그렇다면 코틀린을 사용해서 리스트를 어떻게 만들까?
val newList = listOf(1, 2, 3)
보통 간단한 요소 몇개를 가진 리스트를 선언하기 위해서 listOf
를 사용한다.
하지만 listOf
의 선언부에서는 복잡한 로직을 수행하기 어렵다.
val newList = mutableListOf<Int>()
newList.add(1)
newList.add(2)
newList.add(3)
// 복잡한 추가로직
val newList = mutableListOf<Int>().apply {
add(1)
add(2)
add(3)
// 복잡한 추가로직
}
복잡한 로직을 수행하기 위해서는 mutableListOf
로 변경가능한 리스트를 생성한 후, 요소를 추가하는 방법이 있다.
코드가 길어지거나 복잡한 로직으로 요소를 추가하기 위해서 많이 사용한다.
다만, 이 방법의 문제점은 MutableList
로 선언되기 때문에 불변인 List
로 변환하지 않는이상 리스트가 어디서 변경되어도 이상하지 않다는 것이다.
만약 불변리스트가 필요하면서 상당히 복잡한 코드가 수행되어야한다면, buildList
를 고려해보는 것을 추천한다.
val newList = buildList{
(0..3).forEach{ index -> add(index) }
// 복잡한 추가로직
}
mutableListOf
의 케이스처럼 복잡한 로직을 .apply
가 없이도 블록으로 묶음으로써 가독성을 높이고, 선언은 불변리스트로 되기 때문에 별도의 변환 없이도 변경에 대한 불안을 덜 수 있다.
만약 불변리스트를 선언해야한다면 buildList
를 사용해보는 것은 어떨까?