Array<T>
এটি জ্ঞাত বাস্তবায়ন সহ একটি শ্রেণি: এটি আইটেমগুলি সংরক্ষণ করে একটি ক্রমযুক্ত নির্দিষ্ট আকারের মেমরি অঞ্চল (এবং জেভিএম এ এটি জাভা অ্যারে দ্বারা উপস্থাপন করা হয় )।
List<T>
এবং MutableList<T>
: ইন্টারফেসগুলি যা বিভিন্ন বাস্তবায়নের আছে ArrayList<T>
, LinkedList<T>
ইত্যাদি স্মৃতি উপস্থাপনা এবং অপারেশন তালিকার যুক্তিবিজ্ঞান কংক্রিট বাস্তবায়ন, যেমন মধ্যে সংজ্ঞায়িত করা হয় একটি ইন্ডেক্স LinkedList<T>
লিঙ্ক মাধ্যমে যায় এবং যেহেতু হে (ঢ) সময় লাগে ArrayList<T>
স্টোরগুলি পরিবর্তনশীল বরাদ্দ অ্যারের মধ্যে তার আইটেম।
val list1: List<Int> = LinkedList<Int>()
val list2: List<Int> = ArrayList<Int>()
Array<T>
পরিবর্তনীয় (এটির কোনও রেফারেন্সের মাধ্যমে এটি পরিবর্তন করা যেতে পারে), তবে List<T>
পরিবর্তনের পদ্ধতি নেই (এটি হয় কেবলমাত্র পঠনযোগ্য দর্শনMutableList<T>
বা এক পরিবর্তনযোগ্য তালিকার বাস্তবায়ন )।
val a = arrayOf(1, 2, 3)
a[0] = a[1] // OK
val l = listOf(1, 2, 3)
l[0] = l[1] // doesn't compile
val m = mutableListOf(1, 2, 3)
m[0] = m[1] // OK
অ্যারেগুলির আকার স্থির থাকে এবং ধরে রাখার পরিচয়টি প্রসারিত বা সঙ্কুচিত করতে পারে না (এটির আকার পরিবর্তন করতে আপনাকে কোনও অ্যারে অনুলিপি করতে হবে)। তালিকাগুলি, MutableList<T>
রয়েছে add
এবং remove
ফাংশনগুলি, যাতে এটি এর আকার বাড়াতে এবং হ্রাস করতে পারে।
val a = arrayOf(1, 2, 3)
println(a.size) // will always be 3 for this array
val l = mutableListOf(1, 2, 3)
l.add(4)
println(l.size) // 4
Array<T>
হয় উপর পরিবর্তিতT
( Array<Int>
নয় Array<Number>
), একই MutableList<T>
, কিন্তু List<T>
covariant (হয় List<Int>
হয় List<Number>
)।
val a: Array<Number> = Array<Int>(0) { 0 } // won't compile
val l: List<Number> = listOf(1, 2, 3) // OK
অ্যারেগুলির প্রিমিটিভের জন্য অপ্টিমাইজ করা হয়: পৃথক আছে IntArray
, DoubleArray
, CharArray
ইত্যাদি যা জাভা আদিম অ্যারে ম্যাপ করা হয় ( int[]
, double[]
, char[]
), না boxed বেশী ( Array<Int>
জাভার ম্যাপ করা হয় Integer[]
)। সাধারণভাবে তালিকাগুলি আদিমদের জন্য অনুকূলিতকরণগুলি গ্রহণ করে না, যদিও কিছু লাইব্রেরি (জেডিকে বাইরে) আদিম-অনুকূলিত তালিকা সরবরাহ করে।
List<T>
এবং MutableList<T>
করছে ধরনের ম্যাপ এবং জাভা ইনটেরোপিরাবিলিটি বিশেষ আচরণ (জাভার আছে List<T>
যেমন পারেন Kotlin থেকে দেখা যায় List<T>
বা MutableList<T>
)। অ্যারেগুলিকেও ম্যাপ করা হয়েছে তবে জাভা আন্তঃক্রিয়াশীলতার তাদের অন্যান্য নিয়ম রয়েছে।
কিছু অ্যারে ধরনের ব্যবহার করা হয় টীকা (আদিম অ্যারে, Array<String>
, এবং অ্যারে enum class
এন্ট্রি), এবং সেখানে একটি বিশেষত্ব আছে টীকা জন্য অ্যারের আক্ষরিক সিনট্যাক্স । তালিকা এবং অন্যান্য সংগ্রহগুলি টীকায় ব্যবহার করা যাবে না।
ব্যবহার হিসাবে, ভাল অনুশীলন হ'ল আপনার কোডের পারফরম্যান্সের সমালোচনামূলক অংশগুলি বাদে সর্বত্র অ্যারেগুলির উপরে তালিকা ব্যবহার করা পছন্দ করা, যুক্তি জাভা হিসাবে একই ।
Array
? শুধু এটা উপাদান নেই - একইList
। এর আকারওList
স্থির।