أربع طرق من جافا Arraylist Traversal واستخدام فئة ArrayList في Java
package com.test ؛ import java.util.arraylist ؛ import java.util.iterator ؛ import java.util.list ؛ public class ArrayListDemo {public static void main (string args []) {list <string> list = new ArrayList < String> () ؛ (it1.next ()) ؛ لـ (سلسلة TMP: قائمة) {system.out.println (TMP) ؛ الحصول على (i)) ؛ملاحظة: استخدام فئة ArrayList في Java
1. ما هو arraylist
ArrayList هي الصفيف الديناميكي الأسطوري.
زيادة العناصر وتقليلها ديناميكيًا
تنفيذ واجهات icollection و Ilist
إعداد مرن لحجم الصفيف
2. كيفية استخدام ArrayList
أبسط مثال:
قائمة ArrayList = New ArrayList () ؛ 5) .toarray (typeof (int32)) ؛ // إرجاع المصفوفة الواردة في ArrayList
هذا مثال بسيط.
3. الأساليب المهمة وخصائص ArrayList
1) مُنشئ
يوفر ArrayList ثلاثة منشئين:
ArrayList العامة () ؛
سيقوم المُنشئ الافتراضي بتهيئة الصفيف الداخلي بحجم (16)
ArrayList العامة (ICollection) ؛
تم بناؤه باستخدام كائن iCollection وإضافة عناصر من المجموعة إلى قائمة ArrayList
ArrayList العامة (int) ؛
تهيئة الصفيف الداخلي بالحجم المحدد
2) الممتلكات المصدرة و arraylist.synchronized طريقة
تشير الخاصية المصدر إلى ما إذا كان مثيل ArrayList الحالي يدعم مزامنة مؤشرات الترابط ، في حين أن الطريقة الثابتة arraylist.synchronized تُرجع تغليف مزامنة مؤشر ترابط ArrayList.
إذا كنت تستخدم مثيلات التزامن غير المتقدمة ، فأنت بحاجة إلى الاتصال يدويًا للحفاظ على مزامنة مؤشر الترابط عند الوصول إلى قواعد ثلاثية الأبعاد ، على سبيل المثال:
قائمة ArrayList = New ArrayList () ؛
خاصية Syncroot هي في الواقع نفسها ، ولكن من أجل تلبية تعريف المزامنة للـ Icollection ،
هنا ما زلنا نستخدم Syncroot للحفاظ على توحيد رمز المصدر
{list.add ("إضافة عنصر") ؛إذا كنت تستخدم مثيل ArrayList.synchron ، فأنت لا تحتاج إلى مراعاة المزامنة الخيط بواسطة ArrayList.synchronized مثيل ، كل خاصية في تكنولوجيا المعلومات تستخدم الكلمة الرئيسية القفل لضمان مزامنة مؤشر الترابط.
3) السمة العد وسمة السعة
خاصية Count هي عدد العناصر الموجودة حاليًا في ArrayList ، وهذه الخاصية هي للقراءة فقط.
خاصية السعة هي العدد الأقصى الذي يمكن أن يحتوي عليه ArrayList حاليًا.
4) إضافة ، addrange ، إزالة ، removeeat ، removerange ، إدراج ، inserTrange
هذه الطرق متشابهة
يتم استخدام طريقة إضافة لإضافة عنصر إلى نهاية القائمة الحالية
يتم استخدام طريقة Addrange لإضافة مجموعة من العناصر إلى نهاية القائمة الحالية
يتم استخدام طريقة إزالة لحذف عنصر وحذفه من خلال مرجع العنصر نفسه.
يتم استخدام طريقة removeeat لحذف عنصر وحذفه عن طريق فهرسة القيمة.
يتم استخدام Removerange لحذف مجموعة من العناصر ، والتي يتم حذفها عن طريق تحديد فهرس البدء وعدد الحذف.
يتم استخدام إدراج لإضافة عنصر إلى الموضع المحدد ، ويتم نقل العناصر وراء القائمة إلى الوراء بدورها.
يتم استخدام inserTrange لإضافة مجموعة من العناصر من الموضع المحدد ، ويتم نقل العناصر وراء القائمة إلى الوراء بدورها.
بالإضافة إلى ذلك ، هناك عدة طرق مماثلة:
يتم استخدام الطريقة الواضحة لمسح جميع العناصر الموجودة.
يتم استخدام طريقة تحتوي على أن الكائن ليس في القائمة.
لن أكون مثقلة بالباقي.
5) طريقة القماش
يتم استخدام هذه الطريقة لإصلاح قائمة ArrayList إلى حجم العنصر الفعلي.
6) طريقة tararray
هذه الطريقة نسخ عنصر ArrayList إلى صفيف جديد.
4.
مثال 1:
قائمة ArrayList = قائمة ArrayList () ؛ ؛
مثال 2:
قائمة ArrayList = قائمة ArrayList () ؛ ؛
يقدم ما ورد أعلاه طريقتين للتحويل من ArrayList إلى Array
مثال 3:
قائمة ArrayList = قائمة ArrayList () ؛ ؛
يختلف الأمر عن صفيف ، لأنه يمكن تحويله إلى صفيف كائن ، لذلك لن يرتكب أي خطأ في إضافة أنواع مختلفة من العناصر إلى قائمة ArrayList. يمكن تحويلها بشكل صحيح بواسطة جميع العناصر ، وإلا فإن استثناء لا يمكن تحويله سيتم طرحه.
5. أفضل نصيحة حول استخدام ArrayList
في هذا القسم ، سنناقش الفرق بين ArrayList و Array ، وكذلك كفاءة ArrayList
1) ArrayList هو نسخة معقدة من المصفوفة
ArrayList يلف مجموعة من نوع الكائن.
تحديد حجم العنصر الفعلي.
6) طريقة tararray
هذه الطريقة نسخ عنصر ArrayList إلى صفيف جديد.
4.
مثال 1:
قائمة ArrayList = قائمة ArrayList () ؛ ؛
مثال 2:
قائمة ArrayList = قائمة ArrayList () ؛ ؛
يقدم ما ورد أعلاه طريقتين للتحويل من ArrayList إلى Array
مثال 3:
قائمة ArrayList = قائمة ArrayList () ؛ ؛
يختلف الأمر عن صفيف ، لأنه يمكن تحويله إلى صفيف كائن ، لذلك لن يرتكب أي خطأ في إضافة أنواع مختلفة من العناصر إلى قائمة ArrayList. يمكن تحويلها بشكل صحيح بواسطة جميع العناصر ، وإلا فإن استثناء لا يمكن تحويله سيتم طرحه.
5. أفضل نصيحة حول استخدام ArrayList
في هذا القسم ، سنناقش الفرق بين ArrayList و Array ، وكذلك كفاءة ArrayList
1) ArrayList هو نسخة معقدة من المصفوفة
يقوم ArrayList بتغليف مجموعة من نوع الكائنات بشكل عام طريقة الصفيف.
2) تأثير نوع الكائن الداخلي
بالنسبة للأنواع المرجعية العامة ، فإن هذا الجزء ليس له تأثير كبير ، ولكن بالنسبة لأنواع القيمة ، فإن إضافة العناصر وتعديلها إلى ArrayList ستؤثر على عمليات التعبئة وعدم الصناديق ، وقد تؤثر العمليات المتكررة على بعض الكفاءة.
ولكن بالنسبة لمعظم الناس ، تستخدم معظم التطبيقات صفائف من أنواع القيمة.
لا توجد طريقة للتخلص من هذا التأثير.
3) التوسع الصفيف
هذا عامل له تأثير أكبر على كفاءة arraylist.
كلما قمت بتنفيذ ADD و ADDRANGE و InserTrange وطرق أخرى لإضافة عناصر ، فإنه سيتحقق مما إذا كانت قدرة الصفيف الداخلي غير كافية. جديد.
مثال 1: على سبيل المثال ، إذا تمت إضافة بيانات تحتوي على 200 عنصر ديناميكيًا إلى قائمة ArrayList التي تم إنشاؤها مع الحجم الافتراضي لـ 16 عنصرًا ، فستمر:
16*2*2*2 = 256
ستتمكن أربعة من التوسعات من تلبية المتطلبات النهائية ، لذلك إذا:
قائمة ArrayList = New ArrayList (210) ؛
إنشاء قائمة ArrayList في الطريق لن يقلل فقط من عمليات إنشاء صفيف 4 مرات ونسخها فحسب ، بل تقلل أيضًا من استخدام الذاكرة.
مثال 2: يتم إنشاء قائمة ArrayList مع 30 عنصرًا متوقعًا:
قائمة ArrayList = New ArrayList (30) ؛
أثناء عملية التنفيذ ، إذا تمت إضافة 31 عنصرًا ، فسيتم توسيع نطاق الصفيف إلى حجم 60 عنصرًا ، ولن يتم إضافة أي عناصر جديدة في هذا الوقت. . إذا كان في هذا الوقت ، استخدم:
قائمة ArrayList = New ArrayList (40) ؛
ثم يتم حل كل شيء.
لذلك ، يعد تقدير العناصر الممكنة بشكل صحيح واستدعاء طريقة القسمة في الأوقات المناسبة وسيلة مهمة لتحسين كفاءة استخدام ArrayList.
4) في كثير من الأحيان ، يحتوي على indexof ، ويحتوي على طرق أخرى (فرز ، و binarysearch وغيرها من المربعات
يتم تحسين فقدان الكفاءة الناتج عن الطريقة ، وليس في هذا العمود) أولاً وقبل كل شيء ، نحتاج إلى توضيح أن ArrayList عبارة عن مجموعة ديناميكية ، لا تتضمن خوارزميات يتم الوصول إليها بسرعة من خلال المفتاح أو القيمة ، لذلك في الواقع ، في الواقع ، إن استدعاء الفهرس والطرق الأخرى سهل التنفيذ. أزواج القيمة مثل علامة التجزئة أو القائمة الفرعية.
ArrayList al = new ArrayList () ؛ al.Add ("How") ؛ al.Add (300) ؛ al.add (1.2) ؛ al.add (22.8) ؛