[英]Combine two arrays into one
我正在嘗試將兩個數組合並為一個大數組。 但是我不明白為什么它不起作用。
這是我的代碼:
public class TestaCombine {
private int[] arrayX = new int[20];
private int[] arrayY = new int[6];
private int[] ratings;
public void getRanks(){
arrayX[0] = 3;
arrayX[1] = 4;
arrayX[2] = 2;
arrayX[3] = 6;
arrayX[4] = 2;
arrayX[5] = 5;
arrayY[0] = 9;
arrayY[1] = 7;
arrayY[2] = 5;
arrayY[3] = 10;
arrayY[4] = 6;
arrayY[5] = 8;
}
public void combine(){
ratings = new int[arrayX.length + arrayY.length];
System.arraycopy(arrayX, 0, ratings, 0, arrayX.length);
System.arraycopy(arrayY, 0, ratings, arrayX.length, arrayY.length);
Arrays.sort(ratings);
}
public void print(){
System.out.println(Arrays.toString(ratings));
}
public static void main(String[] args){
TestaCombine tc = new TestaCombine();
tc.getRanks();
tc.combine();
tc.print();
}
我得到的輸出看起來像這樣:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,3,4,5,5, 6,6,7,8,9,10]
不明白所有0的來源。
請注意, arrayX
的大小為20。默認情況下, int
在Java中的值為0。 參見JLS -4.12.5。 變量的初始值 :
對於int類型,默認值為零,即0。
因此,當您這樣做時:
System.arraycopy(arrayX, 0, ratings, 0, arrayX.length);
它也復制零。
這是因為您創建了一個大小為20的數組,並且只在其中初始化了6個值,其余的值在數組初始化期間進行了初始化,並且它們都填充為0。 當您將大小為20的數組和大小為6的數組組合在一起時,會收到大小為26的數組,其中14個值為0
我還建議您使用apache commons庫,該庫包含一組用於管理不同集合的好工具。
您正在將大小為6的數組與大小為20的數組組合在一起。因此,所得數組的大小為26。
但是您只指定了12個值,因此其余的都填充為0。在對集合進行排序時,這也將所有0置於數組的開頭。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.