Kotlin에 List<out E>
컬렉션이 있고이를 초기화하는 다양한 방법이 궁금합니다. Java에서는 다음과 같이 작성할 수 있습니다.
List<String> geeks = Arrays.asList("Fowler", "Beck", "Evans");
Kotlin에서 어떻게 똑같이 할 수 있습니까?
Kotlin에 List<out E>
컬렉션이 있고이를 초기화하는 다양한 방법이 궁금합니다. Java에서는 다음과 같이 작성할 수 있습니다.
List<String> geeks = Arrays.asList("Fowler", "Beck", "Evans");
Kotlin에서 어떻게 똑같이 할 수 있습니까?
답변:
listOf
구조에 대한 최상위 기능 :
val geeks = listOf("Fowler", "Beck", "Evans")
List<T>
이므로 변경 가능하다고 가정해서는 안됩니다.
Ilya 와 gmariotti의 찬성 답변 은 모두 훌륭하고 정확합니다. 그러나 일부 대안은 주석으로 퍼져 있으며 일부는 전혀 언급되지 않습니다.
이 답변에는 설명 및 몇 가지 다른 대안과 함께 이미 제공된 요약에 대한 요약이 포함됩니다.
List
)불변 또는 읽기 전용 목록은 요소를 추가하거나 제거 할 수없는 목록입니다.
listOf()
종종 원하는 것을 수행합니다. 이렇게하면 Arrays.asList
Java 와 유사한 불변 목록이 생성 됩니다.emptyList()
동일한 작업을 수행하지만 자연스럽게 빈 목록을 반환합니다.listOfNotNull()
모든 null
요소를 제외한 불변 목록을 반환합니다 .MutableList
)변경 가능한 목록에는 요소가 추가되거나 제거 될 수 있습니다.
mutableListOf()
일반적으로 목록에서 요소를 추가하거나 제거해야 할 때 원하는 사용을 제안 합니다.arrayListOf()
. 이것은 변경 가능한 ArrayList
. 정말로 ArrayList
구현을 원한다면 이것을 mutableListOf()
.List
편의 기능이없는 다른 구현의 경우 예를 들어 val list = LinkedList<String>()
. 그것은 단순히 생성자를 호출하여 객체를 생성하는 것입니다. 예를 들어 LinkedList
구현 을 정말로 원하는 경우에만 이것을 사용하십시오 .몇 가지 사용 사례를 설명하겠습니다. 항목을 초기화하여 변경 불가능한 (변경 불가능한) 목록을 만들어 보겠습니다.
val myList = listOf("one" , "two" , "three")
필드를 초기화하여 변경 가능한 (변경 가능한) 목록을 만들어 보겠습니다.
val myList = mutableListOf("one" , "two" , "three")
불변 (변경 불가능)을 선언하고 인스턴스화합시다.
lateinit var myList : List<String>
// and then in the code :
myList = listOf("one" , "two" , "three")
마지막으로 각각에 몇 가지 추가 항목을 추가합니다.
val myList = listOf("one" , "two" , "three")
myList.add() //Unresolved reference : add, no add method here as it is non mutable
val myMutableList = mutableListOf("one" , "two" , "three")
myMutableList.add("four") // it's ok
listOf
?