我想创建一个包含多个空字符串的String数组。
String[] array = {"", "", "", "", ""};
在python中,我们只需使用此代码[""] * 5
即可实现此目的。
java有类似的东西吗?
答案 0 :(得分:4)
没有句法,没有。
在API级别,有Arrays.fill
,但遗憾的是它没有返回您传递的数组,因此您无法在初始化程序中使用它,您必须使用它它之后:
String[] array = new String[5];
Arrays.fill(array, "");
当然,您可以随时使用自己的静态实用程序方法。
public static <T> T[] fill(T[] array, T value) {
Arrays.fill(array, value);
return array;
}
然后
String[] array = YourNiftyUtilities.fill(new String[5], "");
(显然,用可变对象做这件事可能很狡猾,但是对于String来说这很好。)
答案 1 :(得分:2)
使用Java 8,你有一个不那么简洁但比重复文字更好的习语:
// will create a String[] with 42 blank Strings
String[] test = Stream
// generate an infinite stream with a supplier for empty strings
.generate(() -> "")
// make the stream finite to a given size
.limit(42)
// convert to array with the given generator function to allocate the array
.toArray(String[]::new);
答案 2 :(得分:2)
您可以使用Array
类中的fill
方法。
String[] test = new String[10];
Array.fill(test, "");
答案 3 :(得分:1)
最接近的是
String[] array = new String[5];
Arrays.fill(array, "");
然而,与array
首先使用null
值进行初始化并不完全相同。
答案 4 :(得分:1)
您可以尝试循环:
String[] array = new String[5];
for (int i = 0; i < 5; i++)
array[i] = "";
答案 5 :(得分:1)
另一种方法是使用IntStream.rangeClosed
生成所需数量的字符串。
String[] result = IntStream.rangeClosed(1, 5)
.mapToObj(i -> "")
.toArray(String[]::new);