جافا ناقلات أو قائمة الممتعة للبيئام
-
18-09-2019 - |
سؤال
هل هناك فئة مجموعة قابلة للتوسيع في 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 لمجموعات الكسوف.