130 votes

Créer une liste d'int ? primitifs

Existe-t-il un moyen de créer une liste de primitives int ou toute autre primitive en java comme suit ?

List<int> myList = new ArrayList<int>();

Il semble que je puisse faire List myList = new ArrayList();

et ajouter "int" dans cette liste. Mais cela voudrait dire que je peux ajouter n'importe quoi dans cette liste.

Ma seule option est-elle de créer un tableau d'int et de le convertir en liste ou de créer une liste d'objets Integer ?

5voto

Reimeus Points 93429

Les collections utilisent des génériques qui prennent en charge soit types de référence ou des wilcards. Vous pouvez toutefois utiliser un Integer emballage

List<Integer> list = new ArrayList<>();

5voto

Nikhil Nanivadekar Points 1070

Vous pouvez utiliser les collections primitives disponibles dans Collections Eclipse . Eclipse Collections a List , Set , Bag y Map pour toutes les primitives. Les éléments des collections de primitives sont maintenus en tant que primitives et aucune mise en boîte n'a lieu.

Vous pouvez initialiser un IntList comme ça :

MutableIntList ints = IntLists.mutable.empty();

Vous pouvez convertir un List<Integer> a IntList comme ça :

List<Integer> integers = new ArrayList<>();
MutableIntList ints = ListAdapter.adapt(integers).collectInt(each -> each);

Note : Je suis un contributeur d'Eclipse Collections.

1voto

Borislav Stoilov Points 144

JEP 402 du projet Valhalla, promet de permettre cela. Ils supprimeront le besoin de classes enveloppantes, ce qui signifie qu'il n'y aura plus d'emballage et de désemballage.

alors faites attention à cela

0voto

Robin Davies Points 2088

Existe-t-il un moyen de convertir un tableau Integer[] en un tableau int[] ?

Cette omission grossière dans les bibliothèques de base de Java semble se produire dans presque tous les projets sur lesquels je travaille. Et aussi pratique que puisse être la bibliothèque Trove, je suis incapable d'analyser les exigences précises pour répondre à la LPGL pour une application Android qui lie statiquement une bibliothèque LGPL (le préambule dit ok, le corps ne semble pas dire la même chose). Et c'est tout simplement gênant de devoir déchirer les sources Apache pour obtenir ces classes. Il doit y avoir un meilleur moyen.

0voto

Zonic Points 135

Lorsque vous utilisez Java pour le développement d'Android, il est recommandé d'utiliser SparseIntArray pour empêcher l'autoboxing entre int y Integer .

Vous pouvez trouver plus d'informations à SparseIntArray sur la documentation pour les développeurs Android et une bonne explication de l'autoboxage sur Android Entrez la description du lien ici

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X