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