Comment créer une nouvelle Liste en Java
Nous créer un Set
comme:
Set myset = new HashSet()
Comment pouvons-nous créer un List
en Java?
- Sur la javadoc de la Liste. "Tous Connu La Mise En Œuvre De Classes: AbstractList, AbstractSequentialList, ArrayList, AttributeList, CopyOnWriteArrayList, LinkedList, RoleList, RoleUnresolvedList, Pile, Vecteur"
- Cette question est l'un des meilleurs résultats google pour "java créer une liste" et il est très utile de définir des réponses, afin d'semble raisonnable assez de question pour moi 🙂
- C'est une bonne question avec les bonnes réponses. L'un des objectifs de Débordement de Pile est de créer une sorte de réponse canonique pour les questions de programmation, au moins selon les fondateurs du site. Donc essayez d'éviter le droit de vote de ces types de postes dans l'avenir, si vous pouvez résister à la tentation.
InformationsquelleAutor user93796 | 2009-05-13
Vous devez vous connecter pour publier un commentaire.
ou avec les génériques (Java 7 ou plus tard)
ou avec les génériques (les Anciennes versions de java)
En outre, si vous souhaitez créer une liste qui a des choses en elle (bien qu'elle sera de taille fixe):
Permettez-moi de résumer et d'ajouter quelque chose:
JDK
Goyave
Liste Immuable
Vide Liste immuable
Liste de Caractères
Liste d'Entiers
Ints.asList
ne pas créer une liste immuable, mais une taille fixe la liste soutenue par tableau d'entiers (c'est à dire qu'il prend en chargeList.set(int, Object)
). Deuxième exemple de "Immuable Liste de Caractères" n'est pas immuable, soit (je l'avais supprimer cette ligne).Dans Java 8
Pour créer une liste vide de taille fixe (opérations comme ajouter, supprimer, etc., ne sont pas pris en charge):
Pour créer un non-vide mutable liste:
En Java 9
À l'aide d'un nouveau
Liste.de(...)
statique usine méthodes:En Java 10
À l'aide de la Variable Locale De L'Inférence De Type:
Et de suivre les meilleures pratiques...
Ne pas utiliser des types
Depuis Java 5, les médicaments génériques ont été une partie de la langue, et vous devez les utiliser:
Programme d'interfaces
Par exemple, programme de la
List
interface:Au lieu de:
Première lecture cette, alors lisez la cette et cette. 9 fois sur 10, vous pourrez utiliser l'un de ces deux implémentations.
En fait, il suffit de lire Soleil du Guide des Collections cadre.
ArrayList
. Si je suis le seul à travailler avec la fin de la liste, c'est un deque (ou de la file d'attente) et j'utilise leArrayDeque
mise en œuvre. La raison en est que, même si le tableau implémentations basées à déchets de la mémoire sur les logements vides (quand je ne peux pas prédire la capacité nécessaire), pour les petites collections ceci est comparable à la surcharge de tout le nœud de cas dans une liste (ou deque). Et en retour, je reçois un accès aléatoire. Quel avantage unique neLinkedList
fournir?Depuis Java 7, vous avez l'inférence de type pour les génériques de création d'instance, donc il n'est pas nécessaire de dupliquer les paramètres génériques sur le côté droit de la cession:
Une taille fixe la liste peut être définie comme:
Pour immuable listes, vous pouvez utiliser le Goyave bibliothèque:
Liste est juste une interface comme Ensemble.
Comme HashSet est une mise en œuvre d'un Ensemble qui a certaines propriétés en ce qui concerne à ajouter /recherche /suppression de performance, ArrayList est le nu de la mise en œuvre d'une Liste.
Si vous avez un coup d'oeil à la documentation pour les interfaces, vous trouverez Tous Connu la mise en Œuvre de Classes" et vous pouvez décider lequel est le plus adapté à vos besoins.
Les Chances sont que c'est ArrayList.
List
est une interface commeSet
et aArrayList
etLinkedList
comme usage général implémentations.Nous pouvons créer une Liste comme:
Nous pouvons également créer une taille fixe de liste:
Nous serait presque toujours à l'aide de
ArrayList
opposition àLinkedList
mise en œuvre:LinkedList
utilise beaucoup d'espace pour les objets et effectue mal lorsque nous avons beaucoup d'éléments.LinkedList
nécessite O(n) le temps par rapport à O(1) dansArrayList
.La liste créée par
Arrays.asList
ci-dessus ne peut pas être modifié structurellement, mais ses éléments peuvent encore être modifiés.Java 8
Comme par doc, la méthode
Collections.unmodifiableList
retourne un inmodifiable vue de la liste spécifiée. Nous pouvons l'obtenir comme:Java 9
Au cas où nous utilisons Java 9 alors:
Java 10
Dans le cas où nous sommes à Java 10 puis la méthode de la
Collectors.unmodifiableList
renvoie une instance de vraiment inmodifiable liste introduites dans Java 9. Cochez cette réponse pour plus d'info à propos de la différence dansCollections.unmodifiableList
vsCollectors.unmodifiableList
dans Java 10.Ou avec les génériques
Vous pouvez, bien sûr, remplacer chaîne avec n'importe quel type de variable: Entier, aussi.
Parfois - mais très rarement - au lieu d'une nouvelle liste de tableaux, vous voulez un nouveau LinkedList. Commencer avec une liste de tableaux et si vous avez des problèmes de performance, et la preuve de la liste est le problème, et beaucoup de l'ajout et de la suppression de cette liste alors pas avant de passer à une LinkedList et de voir si les choses s'améliorent. Mais dans la main, le bâton avec ArrayList et tout ira bien.
Un exemple:
Vous pouvez regarder le javadoc pour la Liste et trouver tous connu la mise en œuvre de classes de la
List
de l'interface qui sont inclus avec l'api java.À l'aide de Google Collections, vous pouvez utiliser les méthodes suivantes dans l' Listes classe
Il y a des surcharges pour les varargs de l'initialisation et de l'initialisation à partir d'un
Iterable<T>
.L'avantage de ces méthodes est que vous n'avez pas besoin de spécifier le paramètre générique explicitement comme vous le feriez avec le constructeur - le compilateur déduit à partir du type de la variable.
Vous avez besoin d'importer
List
etArrayList
.Avec Java 9, vous êtes en mesure d'effectuer les opérations suivantes pour créer un immuable
List
:Il y a de nombreuses façons de créer un Ensemble et une Liste. HashSet et liste de tableaux ne sont que deux exemples. Il est également assez courant d'utiliser des génériques avec les collections de ces jours. Je vous suggère de jeter un oeil à ce qu'ils sont
C'est une bonne introduction pour java builtin collections. http://java.sun.com/javase/6/docs/technotes/guides/collections/overview.html
Il vaut mieux que vous utiliser des génériques comme indiqué ci-dessous:
Cas où vous utilisez LinkedList.
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 peu de travail supplémentaire avec les listes, Flux vous donnera plus de solutions de rechange (filtres, carte, réduire, etc.)
Comme une option, vous pouvez utiliser la double accolade de l'initialisation ici:
À l'aide de Eclipse Collections vous pouvez créer une Liste comme ceci:
Si vous voulez une liste immuable:
Vous pouvez éviter l'auto-boxing par l'aide de primitives listes. Voici comment vous pouvez créer int listes:
Il y a des variantes pour tous les 8 primitives.
Remarque: je suis un committer pour Eclipse Collections.
Voici quelques façons que vous pouvez créer des listes.
Cela permettra de créer une liste de taille fixe, ajout/suppression de éléments n'est pas possible, il va jeter un
java.lang.UnsupportedOperationException
si vous essayez de le faire.La version suivante est une simple liste de où vous pouvez ajouter/supprimer n'importe quel nombre d'éléments.
C'est la façon de créer un
LinkedList
en java, Si vous avez besoin de faire de fréquentes insertion/suppression d'éléments dans la liste, vous devez utiliserLinkedList
au lieu deArrayList
Essayez ceci:
Ou:
Si vous avez besoin d'un serializable, immuable liste avec une seule entité, vous pouvez utiliser:
Comme une déclaration de tableau liste en java, c'est comme
Il y a de nombreuses façon, vous pouvez créer et initialiser la liste en java.