private val repositories = mutableListOf<String>()
private val repositories = ArrayList<String>()
दोनों परस्पर सूची हैं, फिर दो कीवर्ड का क्या मतलब है mutableListOfया ArrayList?
या कोई बड़ा अंतर है?
जवाबों:
दोनों के बीच एकमात्र अंतर आपकी मंशा का संचार कर रहा है।
जब आप लिखते हैं val a = mutableListOf(), तो आप कह रहे हैं "मुझे एक परिवर्तनशील सूची चाहिए, और मैं कार्यान्वयन के बारे में विशेष रूप से परवाह नहीं करता हूं"। जब आप लिखते हैं, इसके बजाय, val a = ArrayList()आप कह रहे हैं "मैं विशेष रूप से चाहता हूं ArrayList"।
व्यवहार में, कोटलिन के वर्तमान कार्यान्वयन में जेवीएम के लिए संकलन, कॉलिंग mutableListOfएक उत्पादन करेगा ArrayList, और व्यवहार में कोई अंतर नहीं है: एक बार सूची के निर्माण के बाद, सबकुछ समान होगा।
अब, मान लें कि mutableListOfएक अलग प्रकार की सूची को वापस करने के लिए कोटलिन का भविष्य संस्करण बदल जाता है।
लिकलियर की तुलना में, कोटलिन टीम केवल तभी बदलाव करेगी, जब वे नए कार्यान्वयन को लागू करेंगे, जो अधिकांश उपयोग के मामलों के लिए बेहतर होगा। mutableListOfतब आप उस नई सूची के कार्यान्वयन को पारदर्शी तरीके से कर रहे होंगे, और आपको वह बेहतर व्यवहार मुफ्त में मिलेगा। साथ जानाmutableListOfअगर आपके मामले की तरह लगता है के ।
दूसरी ओर, हो सकता है कि आपने अपनी समस्या के बारे में सोचने में समय व्यतीत किया हो, और यह सोचा कि आपकी समस्या के लिए ArrayList वास्तव में सबसे उपयुक्त है, और आप कुछ उप-इष्टतम में स्थानांतरित होने का जोखिम नहीं उठाना चाहते हैं। तब आप शायद या तो ArrayListसीधे उपयोग करना चाहते हैं, या arrayListOfफ़ैक्टरी फ़ंक्शन (एक- ArrayListविशिष्ट एनालॉग से mutableListOf) का उपयोग करना चाहते हैं ।
mutableListOf<T>()इनलाइन फ़ंक्शन इनवोकेशन है जो एक रिटर्न देता है
MutableList<T>। आज के रूप में, का mutableListOfएक उदाहरण देता है ArrayList।
ArrayList<String>() एक निर्माता मंगलाचरण है और इनबिल्ट नहीं किया जा सकता है।
दूसरे शब्दों में, दिए गए:
val a = mutableListOf<String>()
val b = ArrayList<String>()
a प्रकार का है MutableList<String>b प्रकार का है ArrayList<String>रनटाइम पर, दोनों aऔर bकी एक आवृत्ति का आयोजन करेगा ArrayList।
ध्यान दें कि इनलाइनिंग विशेष रूप से उपयोगी है जब प्रकार के संशोधन के साथ जोड़ा जाता है , जो कि listOf, mutableListOfऔर इस तरह के अस्तित्व को सही ठहराता है ।
aऔर bअलग-अलग घोषित प्रकार हैं - इसलिए संकलन समय पर अंतर है।
val b = arrayListOf<String>()
जैसा कि आप सूत्रों में देख सकते हैं :
public inline fun <T> mutableListOf(): MutableList<T> = ArrayList()
तो, कोई अंतर नहीं है, बस एक सुविधा विधि है।
mutableListOfहै और न हीArrayListKotlin में कीवर्ड हैं