可以使用单个重复字符将Java字符串初始化为特定长度吗

可以使用单个重复字符将Java字符串初始化为特定长度吗,java,string,initialization,Java,String,Initialization,我想创建一个具有以下签名的函数: public String createString(int length, char ch) 它应该返回指定长度的重复字符字符串。 例如,如果长度为5且ch为“p”,则返回值应为: 购买力平价 有没有办法在达到所需长度之前不循环执行此操作? 并且没有任何外部定义的常量?char[]chars=new char[len]; 数组。填充(字符,ch); 字符串s=新字符串(字符); 来自apache commons lang对于记录,使用Java8,您可以使用s

我想创建一个具有以下签名的函数:

public String createString(int length, char ch)
它应该返回指定长度的重复字符字符串。
例如,如果长度为5且ch为“p”,则返回值应为:

购买力平价

有没有办法在达到所需长度之前不循环执行此操作?
并且没有任何外部定义的常量?

char[]chars=new char[len];
数组。填充(字符,ch);
字符串s=新字符串(字符);

来自apache commons lang

对于记录,使用Java8,您可以使用streams实现这一点:

String p10times = IntStream.range(0, 10)
  .mapToObj(x -> "p")
  .collect(Collectors.joining());

但这似乎有点矫枉过正

这是一个优雅的纯Java单线解决方案:

Java 11+:

String str=“p”。重复(5);//“购买力平价”
Java 11之前版本:

String str=新字符串(新字符[5])。替换(“\0”,“p”);//“购买力平价”

更高级、更可读

 public static String repeat(int len, String ch) {

        String s = IntStream.generate(() -> 1).limit(len).mapToObj(x -> ch).collect(Collectors.joining());
        System.out.println("s " + s);
        return s;    
    }

真的很简单,也很有帮助。它看起来确实像一个重复的问题,但这里的答案要好得多:)完美!既然可以写1,为什么还要写三行?@deGoot,因为你需要第三方库,而你可能已经有了这个库:)为了避免生成和丢弃IntStream值
String p10Times=Stream.generate(()->“p”).limit(10.collector(collector.joining())
看到所有的解决方案,我想知道
String
是否应该有一个类似
String(int-size,char-filler)
的构造函数,或者一个
fillWith(char-filler)
方法。