用空字符串初始化String []

时间:2018-04-17 13:35:35

标签: java arrays string

我想创建一个包含多个空字符串的String数组。

String[] array = {"", "", "", "", ""};

在python中,我们只需使用此代码[""] * 5即可实现此目的。 java有类似的东西吗?

6 个答案:

答案 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);