¿Existe un método de utilidad en Java que genere una lista o matriz de una longitud especificada con todos los elementos iguales a un valor especificado (por ejemplo, ["foo", "foo", "foo", "foo", "foo"])?
Respuestas:
Puede utilizar Collections.nCopies. Tenga en cuenta que esto copia la referencia al objeto dado, no al objeto en sí. Si está trabajando con cadenas, no importará porque de todos modos son inmutables.
List<String> list = Collections.nCopies(5, "foo");
System.out.println(list);
[foo, foo, foo, foo, foo]
Para una matriz, puede usar Arrays.fill (Object [] a, Object val)
String[] strArray = new String[10];
Arrays.fill(strArray, "foo");
y si necesitas una lista, usa
List<String> asList = Arrays.asList(strArray);
Entonces tengo que usar dos líneas: String [] strArray = new String [5]; Arrays.fill (strArray, "foo") ;. ¿Existe una solución de una línea?
Puede usar Collections.nCopies (5, "foo") como una solución de una línea para obtener una lista:
List<String> strArray = Collections.nCopies(5, "foo");
o combinarlo con toArraypara obtener una matriz.
String[] strArray = Collections.nCopies(5, "foo").toArray(new String[5]);
Con IntStream, puede generar un rango de números enteros, asignarlos al elemento que desee y recopilarlo como una lista.
List<String> list = IntStream.rangeClosed(0, 5)
.mapToObj(i -> "foo")
.collect(Collectors.toList());
O como una matriz
String[] arr = IntStream.rangeClosed(0, 5)
.mapToObj(i -> "foo")
.toArray(String[]::new);
String[] strArray = new String[5]; Arrays.fill(strArray, "foo");. ¿Existe una solución de una sola línea?