【问题标题】:Assigning values in StringBuilder array using {} [closed]使用 {} 在 StringBuilder 数组中分配值 [关闭]
【发布时间】:2022-01-16 19:51:52
【问题描述】:

我做不到:

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

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

【问题讨论】:

  • 您正在创建 一个 StringBuilder,而不是 StringBuilders 的数组。
  • 你想做什么?

标签: java arrays stringbuilder


【解决方案1】:

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();

但是这可以匹配刚刚开始学习Java的smbd。

【讨论】:

    【解决方案2】:

    我会这样做。

    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方法中指定数组类型

    【讨论】:

      猜你喜欢
      • 2021-06-13
      • 1970-01-01
      • 1970-01-01
      • 2015-10-05
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 2019-05-17
      相关资源
      最近更新 更多