Kotlin에서 List <T>를 초기화하는 방법은 무엇입니까?


83

Kotlin에 List<out E>컬렉션이 있고이를 초기화하는 다양한 방법이 궁금합니다. Java에서는 다음과 같이 작성할 수 있습니다.

List<String> geeks = Arrays.asList("Fowler", "Beck", "Evans");

Kotlin에서 어떻게 똑같이 할 수 있습니까?


10
와 함께 listOf?
Michael

답변:


132

listOf 구조에 대한 최상위 기능 :

val geeks = listOf("Fowler", "Beck", "Evans")

11
매개 변수없이 listOf 를 호출 하면 빈 목록이 표시되거나 빈 목록을 호출 하여 더 읽기 쉽게 만들 수 있습니다.
frogcoder

4
도 있습니다 arrayListOf
그렉 T

나중에 수정하기 위해 변경할 수 있습니까?
IgorGanapolsky

1
@IgorGanapolsky 반환 된 유형은 읽기 전용 List<T>이므로 변경 가능하다고 가정해서는 안됩니다.
Ilya

16

Ilyagmariotti의 찬성 답변 은 모두 훌륭하고 정확합니다. 그러나 일부 대안은 주석으로 퍼져 있으며 일부는 전혀 언급되지 않습니다.

이 답변에는 설명 및 몇 가지 다른 대안과 함께 이미 제공된 요약에 대한 요약이 포함됩니다.

변경할 수없는 목록 ( List)

불변 또는 읽기 전용 목록은 요소를 추가하거나 제거 할 수없는 목록입니다.

  • Ilya가 지적했듯이 listOf()종종 원하는 것을 수행합니다. 이렇게하면 Arrays.asListJava 와 유사한 불변 목록이 생성 됩니다.
  • frogcoder 가 주석에서 언급 했듯이 emptyList()동일한 작업을 수행하지만 자연스럽게 빈 목록을 반환합니다.
  • listOfNotNull()모든 null요소를 제외한 불변 목록을 반환합니다 .

변경 가능한 목록 ( MutableList)

변경 가능한 목록에는 요소가 추가되거나 제거 될 수 있습니다.

  • gmariotti는 mutableListOf()일반적으로 목록에서 요소를 추가하거나 제거해야 할 때 원하는 사용을 제안 합니다.
  • Greg T 는 대안을 제공합니다 arrayListOf(). 이것은 변경 가능한 ArrayList. 정말로 ArrayList구현을 원한다면 이것을 mutableListOf().
  • List편의 기능이없는 다른 구현의 경우 예를 들어 val list = LinkedList<String>(). 그것은 단순히 생성자를 호출하여 객체를 생성하는 것입니다. 예를 들어 LinkedList구현 을 정말로 원하는 경우에만 이것을 사용하십시오 .

13

그냥 더 많은 정보를 추가, 코 틀린 두 불변을 제공 List하고 MutableList그와 함께 초기화 할 수 있습니다 listOfmutableListOf. 당신이 코 틀린의 이벤트 컬렉션에 관한 것에 더 관심이 있다면, 당신은 공식 참조 문서에 갈 수 컬렉션 .


8

몇 가지 사용 사례를 설명하겠습니다. 항목을 초기화하여 변경 불가능한 (변경 불가능한) 목록을 만들어 보겠습니다.

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 

1

이런 식으로 Kotlin에서 목록을 초기화 할 수 있습니다.

val alphabates : List<String> = listOf("a", "b", "c")
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.