lista initialize inicializar como java list

initialize - list<string[]> java



¿Cómo inicializar el objeto List<String> en Java? (11)

Deberá usar ArrayList<String> o similar.

List<String> es una interfaz.

Utilizar esta:

import java.util.ArrayList; ... List<String> supplierNames = new ArrayList<String>();

No puedo inicializar una lista como en el siguiente código:

List<String> supplierNames = new List<String>(); supplierNames.add("sup1"); supplierNames.add("sup2"); supplierNames.add("sup3"); System.out.println(supplierNames.get(1));

Me enfrento al siguiente error:

No se puede crear una instancia del tipo List<String>

¿Cómo puedo crear una instancia de la List<String> ?


Dependiendo del tipo de lista que quieras usar, algo como

List<String> supplierNames = new ArrayList<String>();

deberías ponerte en marcha

List es la interfaz, ArrayList es una implementación de la interfaz List. Puede encontrar más implementaciones que pueden satisfacer sus necesidades leyendo los API .


En la mayoría de los casos, usted quiere ArrayList simple - una implementación de List

Antes de la versión 7 de JDK

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

JDK 7 y posteriores pueden utilizar el operador de diamante.

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

Más información está escrita aquí. Documentación de Oracle - Colecciones.


La lista es solo una interfaz, una definición de alguna lista genérica. Debe proporcionar una implementación de esta interfaz de lista. Los dos más comunes son:

ArrayList - una lista implementada sobre una matriz

List<String> supplierNames = new ArrayList<String>();

LinkedList - una lista implementada como una cadena de elementos interconectados

List<String> supplierNames = new LinkedList<String>();


La lista es una interfaz y no puede inicializar una interfaz. Instalar una clase de implementación en su lugar.

Me gusta:

List<String> abc = new ArrayList<String>(); List<String> xyz = new LinkedList<String>();


La lista es una interfaz. No puedes usar List para inicializarlo.

List<String> supplierNames = new ArrayList<String>();

Estas son algunas de las clases impulsadas por listas,

ArrayList, LinkedList, Vector

Usted podría utilizar cualquiera de esto según su requisito. Estas clases tienen sus propias características.


Lista es una interfaz , no puede crear una instancia de una interfaz, ya que la interfaz es una convención, qué métodos deben tener sus clases. Para crear una instancia, necesita algunas realizaciones (implementaciones) de esa interfaz. Pruebe el siguiente código con implementaciones muy populares de la interfaz de lista:

List<String> supplierNames = new ArrayList<String>();

o

List<String> supplierNames = new LinkedList<String>();


No se puede crear una instancia de una interfaz, pero hay pocas implementaciones:

JDK2

List<String> list = Arrays.asList("one", "two", "three");

JDK7

//diamond operator List<String> list = new ArrayList<>(); list.add("one"); list.add("two"); list.add("three");

JDK8

List<String> list = Stream.of("one", "two", "three").collect(Collectors.toList());

JDK9

List<String> list = List.of("one", "two", "three");

Además, hay muchas otras formas proporcionadas por otras bibliotecas como Guava .

List<String> list = Lists.newArrayList("one", "two", "three");


Por si acaso, alguien que todavía se detenga en torno a esta pregunta. Porque, veo que uno o dos nuevos usuarios vuelven a hacer la misma pregunta y todos dicen entonces: No , no puedes hacer eso, Querida Prudencia . Aparte de todas las respuestas que se dan aquí, me gustaría proporcionar información adicional. Sí, realmente puedes do, List list = new List (); Pero a costa de escribir implementaciones de todos los métodos de Interfaces. La noción no es simplemente List list = new List (); pero

List<Integer> list = new List<Integer>(){ @Override public int size() { // TODO Auto-generated method stub return 0; } @Override public boolean isEmpty() { // TODO Auto-generated method stub return false; } @Override public boolean contains(Object o) { // TODO Auto-generated method stub return false; }

..... y así sucesivamente (no puedo escribir todos los métodos).

Este es un ejemplo de clase anónima . Es correcto cuando alguien dice: No , no se puede crear una instancia de una interfaz, y eso es correcto. Pero nunca se puede decir, usted puede escribir la lista de la lista = new List (); pero, evidentemente, puedes hacer eso y esa es una afirmación difícil de hacer que no puedes hacer .


Si revisa la API para la List , notará que dice:

Interface List<E>

Ser una interface significa que no se puede crear una instancia (no es posible una new List() ).

Si verifica ese enlace, encontrará algunas class que implementan la List :

Todas las clases de implementación conocidas:

AbstractList , AbstractSequentialList , ArrayList , AttributeList , CopyOnWriteArrayList , LinkedList , RoleList , RoleUnresolvedList , Stack , Vector

Esos pueden ser instanciados. Utilice sus enlaces para saber más sobre ellos, IE: para saber cuál se ajusta mejor a sus necesidades.

Los 3 más utilizados son probablemente:

List<String> supplierNames1 = new ArrayList<String>(); List<String> supplierNames2 = new LinkedList<String>(); List<String> supplierNames3 = new Vector<String>();

Prima:
También puede crear una instancia con valores, de una manera más fácil, utilizando la class Arrays , de la siguiente manera:

List<String> supplierNames = Arrays.asList("sup1", "sup2", "sup3"); System.out.println(supplierNames.get(1));

Pero tenga en cuenta que no está permitido agregar más elementos a esa lista, ya que es fixed-size .


Si solo desea crear una List<T> inmutable List<T> con solo un objeto en ella, puede usar esta API:

List<String> oneObjectList = Collections.singletonList("theOnlyObject”);

Más información: docs