gpt4 book ai didi

java - 性能改进(生成任意长度的随机字符串)

转载 作者:搜寻专家 更新时间:2023-11-01 01:55:31 25 4
gpt4 key购买 nike

生成任意特定长度的随机字符串。我知道这个问题已经被问过很多次了,我在下面写了这段代码,我只是想知道有没有比我写的下面代码更好的方法?或者我们可以让下面的代码更高效?

public static void main(String[] args) {
String s = randomString(25);
System.out.println(s);
}

public static String randomString(final int length) {
StringBuilder sb = new StringBuilder();
Random r = new Random();
String subset = "0123456789abcdefghijklmnopqrstuvwxyz";
for (int i = 0; i < length; i++) {
int index = r.nextInt(subset.length());
char c = subset.charAt( index );
sb.append( c );
}
return sb.toString();
}

最佳答案

因为您提前知道长度,所以设置 StringBuilder 的容量:

StringBuilder sb = new StringBuilder(length);

仅此一项就消除了 StringBuilder 中不必要的内部数组大小调整。

话虽如此,您最好还是使用 char[] 数组而不是 StringBuilder,并且也只将子集表示为 char[]。

private static final char [] subset = "0123456789abcdefghijklmnopqrstuvwxyz".toCharArray();

char buf[] = new char[length];
for (int i=0;i<buf.length;i++) {
int index = r.nextInt(subset.length);
buf[i] = subset[index];
}

return new String(buf);

通过避免对“charAt”和“append”的一些函数调用开销,这里可以获得一些微妙的 yield 。以及消除 StringBuilder 的一些内存和分配时间开销。一般来说,如果您知道要构建的字符串的大小,那么直接使用 char 数组会更有效一些。

关于java - 性能改进(生成任意长度的随机字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10771160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com