मैं कैसे MutlinList को खाली करने के लिए Kotlin के MutableList को इनिशियलाइज़ करूँ?


241

इतना आसान लगता है, लेकिन, मैं कोटलिन को कैसे MutableListखाली MutableListकरूँ?

मैं इसे इस तरह हैक कर सकता था, लेकिन मुझे यकीन है कि वहाँ कुछ आसान उपलब्ध है:

var pusta: List<Kolory> = emptyList()
var cos: MutableList<Kolory> = pusta.toArrayList()

जवाबों:


436

आप बस लिख सकते हैं:

val mutableList = mutableListOf<Kolory>()

यह सबसे मुहावरेदार तरीका है।

वैकल्पिक तरीके हैं

val mutableList : MutableList<Kolory> = arrayListOf()

या

val mutableList : MutableList<Kolory> = ArrayList()

यह इस तथ्य का शोषण कर रहा है कि जावा प्रकार एक संकलक चाल के माध्यम से ArrayListप्रकार MutableListको लागू कर रहे हैं ।


क्या आपको कुछ भी आयात करने की आवश्यकता है? जब मैं अपनी वर्तमान परियोजना में यह लिखता हूं तो मुझे अनसुलझे संदर्भ सरणी मिलते हैं। अगर मैं उत्परिवर्तित करता हूं तो यही है
vextorspace

क्या आपकी कक्षा में स्टैडलिब है?
किरिल रहमान

मुझे बस अपनी बिल्ड में अपना kotlin_version ध्वज स्विच करना था। 1.1.1 के बजाय 1.1.0 पर वापस जाएं।
vextorspace

1
@androiddeveloper ऐसा इसलिए kotlin.collections.Listहै क्योंकि ऐसा नहीं है java.utils.List । कोटलिन में कुछ बिल्ट-इन जावा प्रकारों की मैपिंग के लिए एक तंत्र है। कृपया kotlinlang.org/docs/reference/java-interop.html#mapped-types और इसी तरह के अन्य प्रश्नों का संदर्भ लें । टिप्पणी अनुभाग इस पर विस्तार से चर्चा करने के लिए उपयुक्त नहीं है।
किरिल रहमान

1
@Mohanakrrishna हाँ, फ़ंक्शंस तर्कों का समर्थन करते हैं।
किरिल रहमान

17

सरणी सूची के लिए, सूची के प्रकार के आधार पर विभिन्न रूप:

val myList = mutableListOf<Kolory>() 
// or more specifically use the helper for a specific list type
val myList = arrayListOf<Kolory>()

लिंक्डलिस्ट के लिए:

val myList = linkedListOf<Kolory>()
// same as
val myList: MutableList<Kolory> = linkedListOf()

अन्य सूची प्रकारों के लिए, यदि आप उन्हें सीधे निर्माण करते हैं, तो उन्हें म्यूटेबल माना जाएगा:

val myList = ArrayList<Kolory>()
// or
val myList = LinkedList<Kolory>()

यह Listइंटरफ़ेस को लागू करने वाली किसी भी चीज़ के लिए सही है (अर्थात अन्य संग्रह पुस्तकालय)।

यदि सूची पहले से ही म्यूटेबल है, तो बाईं ओर के प्रकार को दोहराने की आवश्यकता नहीं है। या केवल यदि आप उन्हें केवल-पढ़ने के लिए व्यवहार करना चाहते हैं, उदाहरण के लिए:

val myList: List<Kolory> = ArrayList()

अगर मुझे नए MutableList का आकार पता है तो क्या होगा? ArrayList के लिए, मैं कर सकता हूँ: ArrayList(24)उदाहरण के लिए, अगर मुझे लगता है कि 24 इसके लिए एक अच्छी शुरुआत है, तो शायद इसे इससे ज्यादा की आवश्यकता नहीं होगी।
Android डेवलपर

@androiddeveloper सूची निर्माणकर्ताओं या अंतर्निहित सूचियों के लिए जावा एपीआई के लिए डॉक्स देखें और आप जो चाहते हैं उसके लिए विकल्प देखेंगे।
जैसन मिनार्ड

तुम भूल गए mutableListOf। सही होगा:val myList = arrayListOf<Kolory>() // same as // val myList = mutableListOf<Kolory>()
user924

10

मुझे नीचे पसंद है:

var book: MutableList<Books> = mutableListOf()

/ ** दिए गए तत्वों के साथ एक नया [MutableList] लौटाता है। * /

public fun <T> mutableListOf(vararg elements: T): MutableList<T>
    = if (elements.size == 0) ArrayList() else ArrayList(ArrayAsCollection(elements, isVarargs = true))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.