我必须实现一个从随机生成器获取其元素的数组.每当数组到达它的最后一个元素时,将调用方法resize()来增加数组的大小.在我的代码中,除了调用resize()方法之外,每个东西都会亮起,它对数组的大小没有任何影响.它应该增加数组的大小,以允许输入更多的元素.
for (int j=0; j<arr.length-1; j++) {
random= generator.nextInt(arr.length*4) ;
arr[j]=random;
}
if(arr_size==arr.length){
resize(arr);
for (int h=0; h<(arr.length-1)*2; h++) {
random= generator.nextInt(arr.length*4) ;
arr[h]=random;}
}
Run Code Online (Sandbox Code Playgroud)
这是resize():
private static void resize(int[] arr) {
int[] tmp = new int[2*arr.length];
System.arraycopy(arr,0,tmp,0,arr.length);
arr = tmp;
}
Run Code Online (Sandbox Code Playgroud) 我知道这里发布了很多类似的问题,但这些问题并没有真正回答我的问题.
我只是想知道为什么StringBuilder比使用+运算符的字符串连接快得多.即使+操作员内部是使用StringBuffer或者StringBuilder?
public void shortConcatenation(){
long startTime = System.currentTimeMillis();
while (System.currentTimeMillis()-startTime<=1000){
character+="Y";
}
System.out.println("short :"+character.length());
}
Run Code Online (Sandbox Code Playgroud)
////使用String builder
public void shortConcatenation2(){
long startTime = System.currentTimeMillis();
StringBuilder sb = new StringBuilder();
while (System.currentTimeMillis()-startTime<=1000){
sb.append("Y");
}
System.out.println("string builder short :"+sb.length());
}
Run Code Online (Sandbox Code Playgroud)
提前致谢!