簡體   English   中英

將兩個數組合並為一個

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM