Java Vector或ArrayList for Primitives

Java API中是否有一个可扩展的数组类,它等同于VectorArrayList类,可以与原语(int,char,double等)一起使用?

我需要一个快速,可扩展的整数数组,并且将它们包装在Integer类中以便将它们与VectorArrayList一起使用似乎很浪费。 我的google-fu让我失望了。

遗憾的是,至少在Java API中没有这样的类 。 Java第三方产品有Primitive Collections 。

将自动装箱与现有集合类(特别是List实现)一起使用是非常危险的。 例如:

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

它也是神秘的NullPointerExceptions访问的常见来源(可能通过Map ):

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

http://trove4j.sourceforge.net/

Trove库为Java提供高速常规和原始集合。

请注意,因为Trove使用基元,所以它定义的类型不实现java.util集合接口。

(LGPL许可证)

现代Java支持原语的自动装箱,所以你可以说

 List lst = new ArrayList; lst.add(42); 

这至少避免了新整数的句法醋(42)。

Joda-Primitives 。

还有Java的Primitive Collections,但它有点过时了。

Eclipse Collections具有适用于所有基本类型的原始ArrayLists,以及原始集,包,堆栈和映射。 还有所有原始容器类型的不可变版本。

注意:我是Eclipse Collections的提交者。