Domanda

C'è una classe espandibile array in Java API equivalente alla Vector o classe di ArrayList che può essere utilizzato con le primitive (int, char, doppie, ecc)?

Ho bisogno di un rapido, un array espandibile per gli interi e sembra uno spreco avere avvolgerli nella classe Integer al fine di utilizzarli con Vector o ArrayList. Il mio google-fu mi sta venendo a mancare.

È stato utile?

Soluzione

Non v'è, purtroppo, no tale classe , almeno nel API Java. C'è il primitivi Collezioni per Java prodotto di terze parti.

E 'piuttosto pericoloso usare auto-boxing insieme con le classi di raccolta esistenti (in particolare le implementazioni List). Ad esempio:

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

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

Ed è anche una fonte comune di NullPointerExceptions misteriosa accesso (magari tramite un Map):

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

Altri suggerimenti

http://trove4j.sourceforge.net/

  

La libreria Trove fornisce l'alta velocità   collezioni regolari e primitive per   Java.

Si noti che a causa Trove utilizza primitive, i tipi definisce non implementare le interfacce collezioni java.util.

(licenza LGPL)

Moderno Java supporta autoboxing di primitive, in modo da poter dire

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

Questo almeno evita l'aceto sintattica di new Integer (42).

Joda-Primitives .

C'è anche Collezioni Primitive per Java ma è un po 'fuori moda.

Eclipse Collezioni ha ArrayLists primitive per tutti i tipi primitivi, così come insiemi primitivi, Borse, Stacks e mappe. Ci sono versioni immutabili di tutti i tipi di contenitori primitivi pure.

. Nota: Sono un committer per Eclipse Collezioni

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top