使用 {} 在 StringBuilder 数组中赋值

Assigning values in StringBuilder array using {}

我做不到:

StringBuilder[] textArray = new StringBuilder("Word1", "Word2", "Word3", "e.t.c");

我做错了吗?还是根本不可能?有没有更好的方法?

This is a link to StringBuilder javadoc

如您所见,没有带有可变参数的构造函数可以接受任意数量的字符串。您只能将一个字符串传递给构造函数。但下面的例子可能就是你想要的:

new StringBuilder("one string").append("second string").append("third")

但此示例将创建一个字符串生成器。如果要为每个字符串创建一个 StringBuilder,可以使用流。

        Arrays.stream(new String[]{"one", "second", "third"})
            .map(st -> new StringBuilder(st))
            .toArray();

不过这个可以匹配刚开始学习的smbd Java.

这是我的做法。

StringBuilder[] textArray = Stream
        .of("Word1", "Word2", "Word3")
        .map(StringBuilder::new)
        .toArray(StringBuilder[]::new);

如果你已经有一个字符串数组,你可以这样做。

String[] array = {"Word1", "Word2", "Word3"};

StringBuilder[] textArray = Arrays.stream(array)
        .map(StringBuilder::new)
        .toArray(StringBuilder[]::new);

无论哪种方式,它们打印的都是一样的。

for (StringBuilder sb : textArray) {
    System.out.println(sb);
}

打印

Word1
Word2
Word3

要点是:

  • 将字符串映射到 StringBuilder 对象
  • toArray方法中指定数组类型