코틀린 탐구 : buildList

Skele·2025년 6월 16일
0

오늘은 리스트를 선언하는 방법 중 하나로 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를 사용해보는 것은 어떨까?

profile
Tireless And Restless Debugging In Source : TARDIS

0개의 댓글