باستخدام صغيرة (1-10 البنود) وعلى مستوى المجموعات في جافا

StackOverflow https://stackoverflow.com/questions/57145

  •  09-06-2019
  •  | 
  •  

سؤال

حين خلق دروس في جافا غالبا ما أجد نفسي إنشاء مثيل على مستوى المجموعات التي تعرف في وقت مبكر سوف تكون صغيرة جدا - أقل من 10 عناصر في المجموعة.ولكن لا أعرف عدد من البنود في وقت مبكر لذا عادة ما تختار ديناميكية جمع (ArrayList, ناقلات, الخ).

class Foo
{
  ArrayList<Bar> bars = new ArrayList<Bar>(10);
}

جزء مني يبقي المزعجة في لي أنه من الإسراف في استخدام الديناميكية المعقدة مجموعات شيء هذا صغير الحجم.هل هناك طريقة أفضل من تنفيذ شيء مثل هذا ؟ أو هو هذا المعيار ؟

ملاحظة أنا لست مع ضرب أي (ملحوظة) الأداء العقوبات أو أي شيء مثل ذلك.أنا فقط أتساءل إذا لم يكن هناك طريقة أفضل للقيام بالأشياء.

هل كانت مفيدة؟

المحلول

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

إذا كنت تقوم بإنشاء والتخلص من العديد من الحالات من الطبقة الحاوية (واستطرادا الخاص بك ArrayList سبيل المثال) كل ثانية ، قد لدي مشكلة بسيطة مع جمع القمامة زبد—ولكن هذا شيء يدعو للقلق إذا كان يحدث من أي وقت مضى.جمع القمامة هو عادة أقل من همومك.

نصائح أخرى

لأجل الحفاظ على الأشياء البسيطة ، وأعتقد أن هذا هو الى حد كبير غير هذه المسألة.التطبيق الخاص بك هو مرنة بما فيه الكفاية أنه إذا كانت متطلبات التغيير في المستقبل ، لا تضطر إلى إعادة بيع ديون.أيضا إضافة المزيد من منطق التعليمات البرمجية الخاصة بك من أجل حل الهجين فقط لا يستحق ذلك مع الأخذ بعين الاعتبار الصغيرة الخاصة بك على مجموعة البيانات عالية الجودة من جافا مجموعة API.

مجموعات جوجل وقد مجموعات الأمثل ثابتة/عدد صغير من العناصر.انظر Lists.asList API كمثال.

الحمل هو صغير جدا.من الممكن كتابة هجين مجموعة قائمة الحقول لأول بعض البنود ، ومن ثم يسقط مرة أخرى إلى استخدام صفيف لفترة أطول قائمة.

يمكنك تجنب النفقات العامة من كائن قائمة تماما باستخدام صفيف.للذهاب إلى أبعد من ذلك المتشددين, يمكنك أن يعلن الميدان الكائن تجنب مجموعة تماما واحد البند.

إذا كانت الذاكرة هي حقا مشكلة ، قد ترغب في نسيان استخدام مثيلات الكائن في مستوى منخفض.بدلا من استخدام بيانات أكبر هيكل في أكبر مستوى من التفاصيل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top