Nous créons un Set
as:
Set myset = new HashSet()
Comment créer un List
en Java?
java
list
collections
user93796
la source
la source
Réponses:
ou avec des génériques ( Java 7 ou version ultérieure)
ou avec des génériques (anciennes versions java)
la source
De plus, si vous souhaitez créer une liste contenant des éléments (même si sa taille sera fixe):
la source
Permettez-moi de résumer et d'ajouter quelque chose:
JDK
Goyave
Liste immuable
Liste immuable vide
Liste des personnages
Liste des entiers
la source
Ints.asList
ne crée pas une liste immuable, mais une liste de taille fixe soutenue par un tableau donné d'ints (c'est-à-dire qu'il prend en chargeList.set(int, Object)
). Le deuxième exemple de "Liste immuable de caractères" n'est pas immuable non plus (je supprimerais cette ligne).Dans Java 8
Pour créer une liste non vide de taille fixe (les opérations telles que l'ajout, la suppression, etc. ne sont pas prises en charge):
Pour créer une liste mutable non vide:
Dans Java 9
Utilisation d'une nouvelle
List.of(...)
méthode d'usine statique:Dans Java 10
Utilisation de l' inférence de type variable locale :
Et suivez les meilleures pratiques ...
N'utilisez pas de types bruts
Depuis Java 5, les génériques font partie du langage - vous devez les utiliser:
Programme aux interfaces
Par exemple, programmez l'
List
interface:Au lieu de:
la source
Lisez d'abord ceci , puis lisez ceci et ceci . 9 fois sur 10, vous utiliserez l'une de ces deux implémentations.
En fait, il suffit de lire le Guide de Sun sur le framework Collections .
la source
ArrayList
. Si je ne travaille qu'avec les extrémités d'une liste, c'est un deque (ou une file d'attente) et j'utilise l'ArrayDeque
implémentation. La raison en est que même si les implémentations basées sur les baies peuvent gaspiller de la mémoire sur des emplacements vides (lorsque je ne peux pas prédire la capacité nécessaire), pour les petites collections, cela est comparable à la surcharge de toutes les instances de noeud dans une liste liée ( ou deque). Et en retour, j'obtiens un accès aléatoire. Quel avantage uniqueLinkedList
offre?la source
Depuis Java 7, vous avez une inférence de type pour la création d'instances génériques , il n'est donc pas nécessaire de dupliquer les paramètres génériques sur le côté droit de l'affectation:
Une liste de taille fixe peut être définie comme:
Pour des listes immuables, vous pouvez utiliser la bibliothèque Guava :
la source
La liste n'est qu'une interface comme Set .
Comme HashSet est une implémentation d'un ensemble qui possède certaines propriétés en ce qui concerne les performances d'ajout / recherche / suppression, ArrayList est l'implémentation nue d'une liste.
Si vous jetez un œil à la documentation des interfaces respectives, vous trouverez "Toutes les classes d'implémentation connues" et vous pourrez décider laquelle est la plus adaptée à vos besoins.
Il y a de fortes chances que ce soit ArrayList .
la source
List
est une interface commeSet
et aArrayList
etLinkedList
comme implémentations à usage général .Nous pouvons créer une liste comme:
Nous pouvons également créer une liste de taille fixe comme:
Nous utiliserions presque toujours
ArrayList
plutôt que laLinkedList
mise en œuvre:LinkedList
utilise beaucoup d'espace pour les objets et fonctionne mal lorsque nous avons beaucoup d'éléments.LinkedList
nécessite O (n) de temps par rapport à O (1) inArrayList
.La liste créée par
Arrays.asList
ci-dessus ne peut pas être modifiée structurellement mais ses éléments peuvent toujours être modifiés.Java 8
Selon le document , la méthode
Collections.unmodifiableList
renvoie une vue non modifiable de la liste spécifiée. Nous pouvons l'obtenir comme:Java 9
Dans le cas où nous utilisons Java 9, alors:
Java 10
Dans le cas où nous en sommes à Java 10, la méthode
Collectors.unmodifiableList
retournera une instance de liste vraiment non modifiable introduite dans Java 9. Vérifiez cette réponse pour plus d'informations sur la différence entreCollections.unmodifiableList
vsCollectors.unmodifiableList
et Java 10 .la source
Parfois - mais très rarement - au lieu d'une nouvelle ArrayList, vous pouvez souhaiter une nouvelle LinkedList. Commencez avec ArrayList et si vous avez des problèmes de performances et des preuves que la liste est le problème, et que vous ajoutez et supprimez beaucoup à cette liste - alors - pas avant - passez à une LinkedList et voyez si les choses s'améliorent. Mais dans l'ensemble, restez avec ArrayList et tout ira bien.
la source
Ou avec des génériques
Vous pouvez, bien sûr, remplacer la chaîne par n'importe quel type de variable, comme Integer, également.
la source
Un exemple:
Vous pouvez consulter le javadoc pour List et trouver toutes les classes d'implémentation connues de l'
List
interface qui sont incluses avec l'API Java.la source
À l'aide de Google Collections , vous pouvez utiliser les méthodes suivantes dans la classe Lists
Il existe des surcharges pour l'initialisation des varargs et l'initialisation à partir d'un
Iterable<T>
.L'avantage de ces méthodes est que vous n'avez pas besoin de spécifier explicitement le paramètre générique comme vous le feriez avec le constructeur - le compilateur le déduira du type de la variable.
la source
Vous devez importer
List
etArrayList
.la source
Plus d'options pour faire la même chose avec Java 8, pas mieux, pas pire, juste différent et si vous voulez faire un travail supplémentaire avec les listes, Streams vous fournira plus d'alternatives (filtrer, mapper, réduire, etc.)
la source
Avec Java 9, vous pouvez effectuer les opérations suivantes pour créer un immuable
List
:la source
En option, vous pouvez utiliser l'initialisation à double accolade ici:
la source
Il existe de nombreuses façons de créer un ensemble et une liste. HashSet et ArrayList ne sont que deux exemples. Il est également assez courant d'utiliser des génériques avec des collections de nos jours. Je vous suggère de voir ce qu'ils sont
Ceci est une bonne introduction aux collections intégrées de Java. http://java.sun.com/javase/6/docs/technotes/guides/collections/overview.html
la source
Il vaut mieux utiliser des génériques comme suggéré ci-dessous:
Dans le cas où vous utilisez LinkedList.
la source
À l'aide des collections Eclipse, vous pouvez créer une liste comme celle-ci:
Si vous voulez une liste immuable:
Vous pouvez éviter la boxe automatique en utilisant des listes primitives. Voici comment créer des listes int:
Il existe des variantes pour les 8 primitives.
Remarque: je suis un committer pour les collections Eclipse.
la source
Voici quelques façons de créer des listes.
Cela créera une liste de taille fixe, l' ajout / la suppression d' éléments n'est pas possible, il lancera un
java.lang.UnsupportedOperationException
si vous essayez de le faire.La version suivante est une liste simple où vous pouvez ajouter / supprimer un nombre illimité d'éléments.
Voici comment créer un
LinkedList
en Java, Si vous devez faire l' insertion fréquente / suppression d'éléments sur la liste, vous devez utiliser auLinkedList
lieu deArrayList
la source
Arrays.asList("Male", "Female")
.Essaye ça:
Ou:
la source
Si vous avez besoin d'une liste sérialisable et immuable avec une seule entité, vous pouvez utiliser:
la source
Comme la déclaration de la liste des tableaux en Java est comme
Il existe de nombreuses façons de créer et d'initialiser une liste de tableaux en Java.
la source