7
votes

Liste Java Syntaxe des génériques pour les types primitifs

Je veux faire un éventail de bytes agricoles. C'est une liste. En C # ferait usage de la syntaxe suivante

List myList = new ArrayList();


0 commentaires

4 Réponses :


5
votes

Utilisez la classe wrapper octet : xxx

puis, en raison de l'autoboxage, vous pouvez toujours avoir: xxx


3 commentaires

La liste est une interface, de sorte que vous ne pouvez pas en neuf. Vous auriez auriez besoin d'utiliser une classe de béton, telle que ArrayList ou Linked LinkedList


@Michael Williamson une faute de frappe, plutôt que de ne pas savoir que;)


Il convient de noter que comparé à un éventail de primitives, ce type de solution utilise 5 à 9 fois plus de mémoire et ajoute une couche supplémentaire d'indirection pour chaque accès. Et alloue une nouvelle mémoire chaque fois qu'une valeur de la liste est modifiée.



3
votes

Vous avez un octet classe fournie par le JRE.

Cette classe est la classe correspondante pour le type primitif

voir ici pour types primitifs.

Vous pouvez le faire: < / p> xxx

comme Michael pointa dans les commentaires: xxx

résultats: xxx


3 commentaires

Il vaut probablement la peine d'ajouter que les génériques et les primitives ne jouent pas bien ensemble - c'est-à-dire que vous ne pouvez pas utiliser une primitive comme argument de type, d'où la nécessité d'utiliser des octets au lieu d'octets. L'autoboxing n'est pas parfait - un octet peut être NULL, où comme un octet ne peut pas, essayer d'attribuer un octet à un octet peut entraîner une exception de pointeur Null.


@Bozho: Ils apparaissent toujours comme les premiers résultats sur Google ou Bing. Un bel exemple où les moteurs de recherche sucent ;-)


Je modifie toujours l'URL ( j2se / 1.4.2 => javase / 6 ) avant de poster des liens vers les documents.



0
votes

Notez que l'utilisation d'un tableau pour stocker une gamme de bytes griffonnés n'est probablement pas une bonne idée, car chaque octet est en boîte, ce qui signifie qu'un nouvel objet d'octet est attribué. Donc, le coût total de la mémoire par octet est un pointeur de l'arraylist + un objet d'octet.

Il est probablement préférable d'utiliser un java.io.byeearrayOutPutStream . Là, le coût de la mémoire par octet est de 1 octet.

Nous pouvons fournir de meilleurs conseils si vous décrivez un peu plus le contexte.


0 commentaires

6
votes

Vous pouvez également utiliser TbyTeArrayList de la bibliothèque GNU Toove .


0 commentaires