اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

1. نظرة عامة

من سؤالك أظن أنه يجب فهم المصفوفات في الجافا وأهمية كل نوع منها ، بالإضافة إلى فهم المقارنة بينهم . 

أولاً ، سنرى نموذجًا للتنفيذ باستخدام ArrayList. بعد ذلك ، سننتقل إلى واجهة القائمة ونقارن الاختلافات.

2. باستخدام ArrayList
ArrayList هو أحد تطبيقات القائمة الأكثر استخدامًا في Java. إنه مبني على قمة مصفوفة ، والتي يمكن أن تنمو وتتقلص ديناميكيًا عندما نضيف / نزيل العناصر. من الجيد تهيئة قائمة بسعة أولية عندما نعلم أنها ستكبر:

ArrayList<String> list = new ArrayList<>(25);

باستخدام ArrayList كنوع مرجعي ، يمكننا استخدام طرق في ArrayList API غير موجودة في List API - على سبيل المثال ، insuranceCapacity أو trimToSize أو removeRange.

2.2. مشكلة البيانات المتغيرة الحجم 

 لنفترض أنه مع تطور التطبيق ، يصبح من الواضح أن عدد الركاب يختلف كثيرًا. على سبيل المثال ، إذا كان هناك خمسة مسافرين محجوزين فقط ، بسعة أولية 20 ، فإن الفاقد في الذاكرة هو 75٪. لنفترض أننا قررنا التبديل إلى قائمة أكثر كفاءة في استخدام الذاكرة. 

2.3 تغيير النوع 

توفر Java تطبيق قائمة آخر يسمى LinkedList لتخزين البيانات متغيرة الحجم. يستخدم LinkedList مجموعة من العقد المرتبطة لتخزين العناصر واستردادها. ماذا لو قررنا تغيير التطبيق الأساسي من ArrayList إلى LinkedList:

private LinkedList<Passenger> passengers = new LinkedList<>();

يؤثر هذا التغيير على أجزاء أكثر من التطبيق لأن جميع الوظائف في التطبيق التجريبي تتوقع العمل مع نوع ArrayList. 

3. التبديل إلى القائمة List 

private List<Passenger> passengers = new ArrayList<>(20);

هنا ، نحن نستخدم واجهة القائمة كنوع مرجعي بدلاً من نوع ArrayList الأكثر تحديدًا. يمكننا تطبيق نفس المبدأ على جميع استدعاءات الوظائف وأنواع الإرجاع. فمثلا:

public List<Passenger> getPassengersBySource(String source) {
    return passengers.stream()
        .filter(it -> it.getSource().equals(source))
        .collect(Collectors.toList());
}

 كلا الفئتين ArrayList و LinkedList عبارة عن تطبيقات لواجهة List. لذلك ، يمكننا الآن تغيير تطبيق القاعدة بأمان دون إحداث أي اضطرابات في أجزاء أخرى من التطبيق. لا يزال الفصل يجمع ويعمل بشكل جيد كما كان من قبل.

خلاصة 

لا يمكننا تحديد افضل نوع مصفوفة فهذا يندرج حسب استخدامك لها 

 

  • 0
نشر (معدل)
بتاريخ 29 دقائق مضت قال Ahmed Sadek:

 

 

شكرا لك اخي على التوضيح سؤالي عن مصفوفة داخل مصفوفة هل عند زيادة القيم يتاثر اداء التطبيق او لا

تم التعديل في بواسطة Amir Aou

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...