Java Vector或ArrayList for Primitives

Dan*_*ham 22 java primitive vector arraylist primitive-types

有Java API中的可膨胀的数组类相当于VectorArrayList可以与图元可以使用类(INT,炭,双,等)?

我需要整数快速,可扩展的阵列,它似乎浪费有包裹他们在Integer班级,以便与使用它们VectorArrayList.我的google-fu让我失望了.

oxb*_*kes 37

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

将自动装箱与现有集合类(特别是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!
Run Code Online (Sandbox Code Playgroud)

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

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

  • 删除(4)删除(新整数(4))示例+ 1! (12认同)
  • 换句话说,使用其中一个第三方库或编写自己的库.知道了谢谢!:) (2认同)
  • **Java的原始集合**已在SourceForge上标记为已删除. (2认同)

ska*_*man 13

http://trove4j.sourceforge.net/

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

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

(LGPL许可证)


Tho*_*ith 5

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

List<Integer> lst = new ArrayList<Integer>;
lst.add(42);
Run Code Online (Sandbox Code Playgroud)

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

  • +1给我介绍"句法醋"这个短语 (7认同)
  • 这很危险(原因如下) (3认同)
  • new Integer(42)是错误的,使用Integer.valueOf(42)进行装箱. (2认同)