Is there an utility method in Java that generates a list or array of a specified length with all elements equal to a specified value (e.g ["foo", "foo", "foo", "foo", "foo"])?
You can use Collections.nCopies
. Note that this copies the reference to the given object, not the object itself. If you're working with strings, it won't matter because they're immutable anyway.
List<String> list = Collections.nCopies(5, "foo");
System.out.println(list);
[foo, foo, foo, foo, foo]
For an array you can use Arrays.fill(Object[] a, Object val)
String[] strArray = new String[10];
Arrays.fill(strArray, "foo");
and if you need a list, just use
List<String> asList = Arrays.asList(strArray);
Then I have to use two lines: String[] strArray = new String[5]; Arrays.fill(strArray, "foo");. Is there a one-line solution?
You can use Collections.nCopies(5, "foo") as a one-line solution to get a list :
List<String> strArray = Collections.nCopies(5, "foo");
or combine it with toArray
to get an array.
String[] strArray = Collections.nCopies(5, "foo").toArray(new String[5]);
If your object are not immutable or not reference-transparent, you can use
Stream.generate(YourClass::new).limit(<count>)
and collect it to list
.collect(Collectors.toList())
or to array
.toArray(YourClass[]::new)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With