Pregunta

¿Hay una clase ampliable matriz en la API de Java equivalente a la Vector o una clase de ArrayList que se puede utilizar con los primitivos (int, char, dobles, etc.)?

Necesito un arreglo rápido, ampliable para los enteros y parece un desperdicio tener que envolverlos en la clase Integer con el fin de utilizarlos con Vector o ArrayList. Mi google-fu me está fallando.

¿Fue útil?

Solución

No es por desgracia hay tal clase , al menos en la API de Java. Existe la primitivas colecciones para el producto 3 ª parte de Java .

Es muy peligroso utilizar auto-boxing, junto con clases de colecciones existentes (en particular, las implementaciones List). Por ejemplo:

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

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

Y también es una fuente común de acceso a NullPointerExceptions misteriosa (tal vez a través de un Map):

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

Otros consejos

http://trove4j.sourceforge.net/

  

La biblioteca Trove proporciona alta velocidad   colecciones regulares y primitivas para   Java.

Tenga en cuenta que debido a Trove utiliza primitivas, los tipos se define no implementan las interfaces colecciones java.util.

(LGPL)

Moderno Java soporta autoboxing de primitivas, por lo que puede decir

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

Eso al menos evita el vinagre sintáctica de nuevo entero (42).

Joda-Primitives .

También hay primitivas colecciones de Java pero es un poco fuera de fecha.

Eclipse Colecciones tiene ArrayLists primitivas para todos los tipos primitivos, así como los conjuntos primitivos, bolsas, Pilas y mapas. Hay versiones inmutables de todos los tipos de contenedores primitivas también.

Nota:. Soy un confirmador de Eclipse Colecciones

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top