Si vous cochez l' API pour List
vous remarquerez qu'il dit:
Interface List<E>
Être un interface
moyen ne peut pas être instancié (non, new List()
c'est possible).
Si vous cochez ce lien, vous trouverez quelques class
es qui implémentent List
:
Toutes les classes d'implémentation connues:
AbstractList
, AbstractSequentialList
, ArrayList
, AttributeList
, CopyOnWriteArrayList
, LinkedList
, RoleList
, RoleUnresolvedList
, Stack
,Vector
Ceux-ci peuvent être instanciés. Utilisez leurs liens pour en savoir plus à leur sujet, IE: pour savoir ce qui correspond le mieux à vos besoins.
Les 3 plus couramment utilisés sont probablement:
List<String> supplierNames1 = new ArrayList<String>();
List<String> supplierNames2 = new LinkedList<String>();
List<String> supplierNames3 = new Vector<String>();
Bonus:
Vous pouvez également l'instancier avec des valeurs, d'une manière plus simple, en utilisant le Arrays
class
, comme suit:
List<String> supplierNames = Arrays.asList("sup1", "sup2", "sup3");
System.out.println(supplierNames.get(1));
Mais notez que vous n'êtes pas autorisé à ajouter plus d'éléments à cette liste, tel quel fixed-size
.
int[] a = {1,2,3}; System.out.println(Arrays.asList(a)); // [[I@70cdd2]
ArrayList
, utiliseznew ArrayList<>(Arrays.asList("sup1", "sup2", "sup3"))
Impossible d'instancier une interface mais il existe peu d'implémentations:
JDK2
JDK7
JDK8
JDK9
De plus, il existe de nombreuses autres façons fournies par d'autres bibliothèques comme Guava .
la source
La liste est une interface , vous ne pouvez pas instancier une interface, car l'interface est une convention, quelles méthodes doivent avoir vos classes. Pour instancier, vous avez besoin de quelques réalisations (implémentations) de cette interface. Essayez le code ci-dessous avec les implémentations très populaires de l'interface List:
ou
la source
Vous devrez utiliser
ArrayList<String>
ou autre.List<String>
est une interface.Utilisez ceci:
la source
La liste est une interface et vous ne pouvez pas initialiser une interface. Instanciez plutôt une classe d'implémentation.
Comme:
la source
La liste n'est qu'une interface, une définition d'une liste générique. Vous devez fournir une implémentation de cette interface de liste. Les deux plus courants sont:
ArrayList - une liste implémentée sur un tableau
LinkedList - une liste implémentée comme une chaîne d'éléments interconnectés
la source
Dans la plupart des cas, vous voulez simple
ArrayList
- une implémentation deList
Avant JDK version 7
JDK 7 et versions ultérieures, vous pouvez utiliser l'opérateur diamant
De plus amples informations sont écrites ici Documentation Oracle - Collections
la source
Selon le type de liste que vous souhaitez utiliser, quelque chose comme
devrait vous permettre de continuer.
List est l'interface, ArrayList est une implémentation de l'interface List. Vous trouverez plus d'implémentations qui peuvent mieux répondre à vos besoins en lisant les JavaDocs de l'interface List .
la source
Si vous souhaitez simplement créer un immuable
List<T>
avec un seul objet, vous pouvez utiliser cette API:Plus d'informations: docs
la source
La liste est une interface. Vous ne pouvez pas utiliser List pour l'initialiser.
Ce sont quelques-unes des classes impelementées List,
Vous pouvez utiliser tout cela selon vos besoins. Ces classes ont chacune leurs propres caractéristiques.
la source
Au cas où, quelqu'un s'attarderait toujours sur cette question. Parce que, je vois un ou deux nouveaux utilisateurs poser à nouveau la même question et tout le monde dit alors, non, vous ne pouvez pas le faire, chère prudence , en dehors de toutes les réponses données ici, je voudrais fournir des informations supplémentaires - oui, vous pouvez réellement do, List list = new List (); Mais au prix d'écrire des implémentations de toutes les méthodes des interfaces. La notion n'est pas simplement List list = new List (); mais
..... et ainsi de suite (Impossible d'écrire toutes les méthodes.)
Ceci est un exemple de classe Anonymous . C'est correct quand quelqu'un déclare, non, vous ne pouvez pas instancier une interface, et c'est vrai. Mais vous ne pouvez jamais dire, vous CANT écrivez List list = new List (); mais, évidemment, vous pouvez le faire et c'est une déclaration difficile à faire que vous ne pouvez pas faire .
la source
List
. Au lieu de cela, il déclare une nouvelle classe qui n'a pas de nom et n'implémente pasList
, et au moment de l'exécution crée un nouvel objet de la classe nouvellement déclarée.Nous avons créé soyuz-to pour simplifier 1 problème: comment convertir
X
enY
(par exempleString
enInteger
). La construction d'un objet est aussi sorte de conversion de sorte qu'il a une fonction simple à construireMap
,List
,Set
:Veuillez le vérifier - il a beaucoup d'autres fonctionnalités utiles
la source