Kotlin에 List<out E>
컬렉션이 있고이를 초기화하는 다양한 방법이 궁금합니다. Java에서는 다음과 같이 작성할 수 있습니다.
List<String> geeks = Arrays.asList("Fowler", "Beck", "Evans");
Kotlin에서 어떻게 똑같이 할 수 있습니까?
답변
listOf
구조에 대한 최상위 기능 :
val geeks = listOf("Fowler", "Beck", "Evans")
답변
Ilya 와 gmariotti의 찬성 답변 은 모두 훌륭하고 정확합니다. 그러나 일부 대안은 주석으로 퍼져 있으며 일부는 전혀 언급되지 않습니다.
이 답변에는 설명 및 몇 가지 다른 대안과 함께 이미 제공된 요약에 대한 요약이 포함됩니다.
변경할 수없는 목록 ( List
)
불변 또는 읽기 전용 목록은 요소를 추가하거나 제거 할 수없는 목록입니다.
- Ilya가 지적했듯이
listOf()
종종 원하는 것을 수행합니다. 이렇게하면Arrays.asList
Java 와 유사한 불변 목록이 생성 됩니다. - frogcoder 가 주석에서 언급 했듯이
emptyList()
동일한 작업을 수행하지만 자연스럽게 빈 목록을 반환합니다. listOfNotNull()
모든null
요소를 제외한 불변 목록을 반환합니다 .
변경 가능한 목록 ( MutableList
)
변경 가능한 목록에는 요소가 추가되거나 제거 될 수 있습니다.
- gmariotti는
mutableListOf()
일반적으로 목록에서 요소를 추가하거나 제거해야 할 때 원하는 사용을 제안 합니다. - Greg T 는 대안을 제공합니다
arrayListOf()
. 이것은 변경 가능한ArrayList
. 정말로ArrayList
구현을 원한다면 이것을mutableListOf()
. List
편의 기능이없는 다른 구현의 경우 예를 들어val list = LinkedList<String>()
. 그것은 단순히 생성자를 호출하여 객체를 생성하는 것입니다. 예를 들어LinkedList
구현 을 정말로 원하는 경우에만 이것을 사용하십시오 .
답변
그냥 더 많은 정보를 추가, 코 틀린 두 불변을 제공 List
하고 MutableList
그와 함께 초기화 할 수 있습니다 listOf
와 mutableListOf
. 당신이 코 틀린의 이벤트 컬렉션에 관한 것에 더 관심이 있다면, 당신은 공식 참조 문서에 갈 수 컬렉션 .
답변
몇 가지 사용 사례를 설명하겠습니다. 항목을 초기화하여 변경 불가능한 (변경 불가능한) 목록을 만들어 보겠습니다.
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
답변
이런 식으로 Kotlin에서 목록을 초기화 할 수 있습니다.
val alphabates : List<String> = listOf("a", "b", "c")