कोटलिन में सूची <T> कैसे इनिशियलाइज़ करें?


83

मुझे लगता है कि कोटलिन के पास एक List<out E>संग्रह है और मैं एक को शुरू करने के लिए अलग-अलग तरीकों के बारे में सोच रहा था। जावा में, मैं लिख सकता था:

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

मैं कोटलिन में कैसे प्राप्त कर सकता हूं?


10
के साथ listOf?
माइकल

जवाबों:


133

listOf बचाव के लिए शीर्ष-स्तरीय कार्य:

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

12
कॉलिंग listOf किसी भी पैरामीटर के बिना आप एक खाली सूची हो जाता है, या सिर्फ फोन emptyList इसे और अधिक पठनीय बनाने के लिए।
मेंढ़क

4
वहाँ भी है arrayListOf
ग्रेग टी

क्या यह बाद के संशोधन के लिए पारस्परिक है?
इगोरगानापोलस्की

1
@IgorGanapolsky लौटा प्रकार केवल पढ़ने के लिए है List<T>, इसलिए किसी को यह नहीं मान लेना चाहिए कि यह परिवर्तनशील है।
इल्या

16

इल्या और गमारियोटी द्वारा उत्कीर्ण दोनों उत्तर अच्छे और सही हैं। कुछ विकल्प हालांकि टिप्पणियों में फैले हुए हैं, और कुछ का उल्लेख नहीं किया गया है।

इस उत्तर में पहले से दिए गए लोगों का एक सारांश, स्पष्टीकरण के साथ और कुछ अन्य विकल्प शामिल हैं।

अपरिवर्तनीय सूचियाँ ( List)

अपरिवर्तनीय, या केवल पढ़ने वाली सूचियाँ, ऐसी सूचियाँ हैं जिनमें जोड़े या हटाए गए तत्व नहीं हो सकते हैं।

  • जैसा कि इलिया बताते हैं, listOf()अक्सर वही होता है जो आप चाहते हैं। यह Arrays.asListजावा के समान एक अपरिवर्तनीय सूची बनाता है ।
  • जैसा कि मेंढक एक टिप्पणी में कहता emptyList()है, वही करता है, लेकिन स्वाभाविक रूप से एक खाली सूची देता है।
  • listOfNotNull()सभी nullतत्वों को छोड़कर एक अपरिवर्तनीय सूची देता है ।

पारस्परिक सूची ( MutableList)

उत्परिवर्ती सूचियों में तत्व जोड़े या हटाए जा सकते हैं।

  • gmariotti का उपयोग करने का सुझाव देता है mutableListOf(), जो आम तौर पर आप क्या चाहते हैं जब आपको सूची से तत्वों को जोड़ने या हटाने की आवश्यकता होती है।
  • ग्रेग टी विकल्प देता है, arrayListOf()। यह एक उत्परिवर्ती बनाता है ArrayList। यदि आप वास्तव में एक ArrayListकार्यान्वयन चाहते हैं , तो इस ओवर का उपयोग करें mutableListOf()
  • अन्य Listकार्यान्वयनों के लिए, जिन्हें कोई सुविधा कार्य नहीं मिला है, उन्हें उदाहरण के लिए, प्रारंभिक किया जा सकता है val list = LinkedList<String>()। बस इसके निर्माता को कॉल करके ऑब्जेक्ट बनाएं। यह केवल तभी उपयोग करें जब आप वास्तव में चाहते हैं, उदाहरण के लिए, एक LinkedListकार्यान्वयन।

13

बस में अधिक जानकारी जोड़ने के लिए, Kotlin दोनों अपरिवर्तनीय प्रदान करता है Listऔर MutableListउस के साथ प्रारंभ किया जा सकता है listOfऔर mutableListOf। आप क्या Kotlin प्रस्तावों संग्रह के बारे में में अधिक रुचि रखते हैं, तो आप पर आधिकारिक संदर्भ डॉक्स पर जा सकते हैं संग्रह


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 

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.