سؤال

هل هناك فئة مجموعة قابلة للتوسيع في api java تعادل Vector أو ArrayList الطبقة التي يمكن استخدامها مع البدائيات (int، char، double، إلخ)؟

أحتاج إلى مجموعة سريعة وقابلة للتوسيع للأعداد الصحيحة ويبدو أنها تضطر إلى لفها في Integer فئة من أجل استخدامها مع Vector أو ArrayList. وبعد بلدي google-fu فشل لي.

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

المحلول

لسوء الحظ لا مثل هذه الفئة, ، على الأقل في api java. هنالك ال مجموعات بدائية ل Java منتج الحزب الثالث.

من الجيد استخدام الملاكمة التلقائية مع فئات المجموعة الحالية (على وجه الخصوص List التنفيذ). علي سبيل المثال:

List<Integer> l = new ArrayList<Integer>();
l.add(4);

l.remove(4); //will throw ArrayIndexOutOfBoundsException
l.remove(new Integer(4)); //what you probably intended!

وهو أيضا مصدر شائع لغزي NullPointerExceptions الوصول (ربما عبر Map):

Map<String, Integer> m = new HashMap<String, Integer>();
m.put("Hello", 5);
int i = m.get("Helo Misspelt"); //will throw a NullPointerException

نصائح أخرى

http://trove4j.sourceforge.net/

توفر مكتبة Trove مجموعات عالية السرعة والعادية والباسية ل Java.

لاحظ أنه نظرا لأن TROVE يستخدم البدائيات، فإن الأنواع التي تحددها لا تنفذ واجهات مجموعات Java.util.

(ترخيص LGPL)

يدعم جافا الحديثة الاستمتاع البدائيين، حتى تتمكن من القول

List<Integer> lst = new ArrayList<Integer>;
lst.add(42);

على الأقل تجنب الخل النحوي من عدد صحيح جديد (42).

جودا بدائري.

يوجد ايضا مجموعات بدائية ل Java لكنه بعيد جدا.

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

ملاحظة: أنا committer لمجموعات الكسوف.

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