有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

原语的Java矢量或ArrayList

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

我需要一个快速的、可扩展的整数数组,为了与VectorArrayList一起使用,必须将它们包装在Integer类中,这似乎是浪费。我的谷歌fu让我失望了


共 (4) 个答案

  1. # 1 楼答案

    不幸的是,至少在JavaAPI中没有这样的类。有Primitive Collections for 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
    
  2. # 2 楼答案

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

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

    这至少避免了新整数(42)的语法错误

  3. # 3 楼答案

    http://trove4j.sourceforge.net/

    The Trove library provides high speed regular and primitive collections for Java.

    注意,因为Trove使用原语,所以它定义的类型没有实现java。util集合接口

    (LGPL许可证)