Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建长度为';x';全部由char'组成;c';在爪哇_Java - Fatal编程技术网

Java 创建长度为';x';全部由char'组成;c';在爪哇

Java 创建长度为';x';全部由char'组成;c';在爪哇,java,Java,我有一个应用程序正在为遗留应用程序创建平面文件。创建平面文件时常见的一种情况是必须用零或空格“填充”空字段。今天,解决这个问题的方法是让所有类为这个填充空间创建一个字符串文本,这个填充空间很难看,很难读取和验证给定字段的长度 我想用一个通用函数替换它,如下所示: public String pad(int len, char c) { StringBuffer sb = new StringBuffer(); for (int i=0; i<len; i++) {

我有一个应用程序正在为遗留应用程序创建平面文件。创建平面文件时常见的一种情况是必须用零或空格“填充”空字段。今天,解决这个问题的方法是让所有类为这个填充空间创建一个字符串文本,这个填充空间很难看,很难读取和验证给定字段的长度

我想用一个通用函数替换它,如下所示:

public String pad(int len, char c) {
    StringBuffer sb = new StringBuffer();
    for (int i=0; i<len; i++) {
        sb.append(c);
    }
    return sb.toString();
}
公共字符串填充(int len,char c){
StringBuffer sb=新的StringBuffer();

对于(int i=0;i如果您使用的是java 8,则使用join函数:

String.join("", Collections.nCopies(numberOfTimes, repeatString));
否则,

return  new String(new char[numberOfTimes]).replace("\0", repeatString);

如果您使用的是java 8,请使用join函数:

String.join("", Collections.nCopies(numberOfTimes, repeatString));
否则,

return  new String(new char[numberOfTimes]).replace("\0", repeatString);

如果重要的是性能,我会建议

public static String pad(int len, char c) {
    char[] charArray = new char[len];
    Arrays.fill(charArray, c);
    return new String(charArray);
}

如果重要的是性能,我会建议

public static String pad(int len, char c) {
    char[] charArray = new char[len];
    Arrays.fill(charArray, c);
    return new String(charArray);
}

如果您不想使用第三方库(您应该这样做,因为他们对正在发生的事情更清楚),您可以:

public String pad(int len, char c) {
    final char[] array = new char[len];
    Arrays.fill(array, c);
    return new String(array);
}

如果您不想使用第三方库(您应该这样做,因为他们对正在发生的事情更清楚),您可以:

public String pad(int len, char c) {
    final char[] array = new char[len];
    Arrays.fill(array, c);
    return new String(array);
}

如果知道字符串的长度,则应将该长度传递给
StringBuilder
StringBuffer sb=new-StringBuffer(len)
此外,您应该在此处使用
StringBuilder
,而不是
StringBuffer
,因为您不需要后者的线程安全功能。请看,最快并不一定是最愚蠢的。如果可维护性更重要,那么许多第三方库都有字符串填充功能。但是,如果性能真的很差我们的首要任务是内存映射文件,并使用直接的
ByteBuffer
写入填充字符。如果您知道字符串的长度,则应将该长度传递给
StringBuilder
StringBuffer sb=new StringBuffer(len)
此外,您应该在此处使用
StringBuilder
,而不是
StringBuffer
,因为您不需要后者的线程安全功能。请看,最快并不一定是最愚蠢的。如果可维护性更重要,那么许多第三方库都有字符串填充功能。但是,如果性能真的很差我们的首要任务是对文件进行内存映射,并使用直接的
ByteBuffer
写入填充字符。代码很好,但我强烈不同意您关于第三方库的说法。依赖性会降低程序的可移植性,并且大多数第三方库管理不善。我接受您的观点,但在本cas中我想你会很难指责Apache commons库管理不善因为我认为我可以做得稍微好一点,所以多次重新发明轮子。代码很好,但我强烈反对你关于第三方库的说法。依赖性使程序的可移植性降低,而且大多数第三方库管理不善。我同意你的观点,但在这种情况下,我认为你很难指责Apache commons图书馆管理不善。我多次尝试(但失败)重新发明轮子,因为我认为我可以做得稍微好一点。快来吧,快来吧。