obtener objetos metodos llenar imprimir elemento como clase bidimensional java arraylist collections

java - objetos - Cómo crear de forma rápida y conveniente un arraylist de un elemento



metodos arraylist java (8)

List tamaño fijo

La forma más fácil, que yo sepa, es crear una List elementos únicos de tamaño fijo con Arrays.asList(T...) como

// Returns a List backed by a varargs T. return Arrays.asList(s);

List tamaños variables

Si necesita variar en tamaño, puede construir un ArrayList y la List tamaño fijo como

return new ArrayList<String>(Arrays.asList(s));

y (en Java 7+) puede usar el operador diamante <> para hacer que

return new ArrayList<>(Arrays.asList(s));

Esta pregunta ya tiene una respuesta aquí:

¿Hay algún método de utilidad que pueda hacer esto en 1 línea? No puedo encontrarlo en ninguna parte en Collections o List .

public List<String> stringToOneElementList(String s) { List<String> list = new ArrayList<String>(); list.add(s); return list; }

No quiero reinventar la rueda a menos que planee ponerle llantas elegantes.

Bueno ... el tipo puede ser T , y no String . Pero usted consigue el punto. (con todas las comprobaciones nulas, controles de seguridad ... etc)


Al ver que la guayaba recibe una mención, pensé que también sugeriría Eclipse Collections (anteriormente conocida como GS Collections).

Todos los ejemplos siguientes devuelven una List con un solo elemento.

Lists.mutable.of("Just one item"); Lists.mutable.with("Or use with"); Lists.immutable.of("Maybe it must be immutable?"); Lists.immutable.with("And use with if you want");

Existen métodos similares para otras colecciones.


Con Java 8 Streams:

Stream.of(object).collect(Collectors.toList())

o si necesitas un set:

Stream.of(object).collect(Collectors.toSet())


Las otras respuestas utilizan Arrays.asList() , que devuelve una lista no modificable Arrays.asList() UnsupportedOperationException si intenta agregar o eliminar un elemento). Para obtener una lista mutable, puede ajustar la lista devuelta en una nueva ArrayList como indican un par de respuestas, pero una solución más limpia es usar Guava''s Lists.newArrayList() Guava''s Lists.newArrayList() (disponible desde al menos Guava 10 , lanzada en 2011).

Por ejemplo:

Lists.newArrayList("Blargle!");


Muy simple:

Arrays.asList("Hi!")


Otra alternativa más es la inicialización de doble refuerzo , por ejemplo,

new ArrayList<String>() {{ add(s); }};

pero es ineficiente y oscuro . Por lo tanto sólo es adecuado:

  • en el código que no le importa las fugas de memoria, como la mayoría de las pruebas unitarias y otros programas de corta duración;
  • y si ninguna de las otras soluciones se aplica, lo que creo que implica que has desplazado hasta aquí buscando poblar un tipo diferente de contenedor que el ArrayList en la pregunta.

Puede usar el método de utilidad Arrays.asList y Arrays.asList ese resultado a una nueva ArrayList .

List<String> list = new ArrayList<String>(Arrays.asList(s));

Otras opciones:

List<String> list = new ArrayList<String>(Collections.nCopies(1, s));

y

List<String> list = new ArrayList<String>(Collections.singletonList(s));

Con Java 7+, puede usar el "operador de diamante", reemplazando la new ArrayList<String>(...) con la new ArrayList<>(...) .

Java 9

Si está utilizando Java 9+, puede usar el método List.of :

List<String> list = new ArrayList<>(List.of(s));

Independientemente del uso de cada opción anterior, puede optar por no usar el new ArrayList<>() envoltorio new ArrayList<>() si no necesita que su lista sea mutable.


Collections.singletonList(object)

La lista creada por este método es inmutable.