簡體   English   中英

在Java中對2D數組進行排列

[英]Make a permutation of a 2d array in Java

我有一個二維矩陣:

double[][] data = new data[1000][1000];

和一維數組:

int[] ID_list;

我想建立一個新矩陣:

double[][] new_data;

使用ID_list進行索引的索引:new_data [1] => data [ID_list [1]],new_data [2] => data [ID_list [2]],...

如何在Java中以最有效的方式做到這一點?

如果您的想法是基於ID_list的索引存儲來重組data 迭代此數組。

double[][] new_data = new double[ID_list.length][];
for(int i = 0; i < ID_list.length; ++i){
    new_data[i] = data[ID_list[i]];
}

這只會復制數組的引用,而不是值本身,因此不會使內存使用量增加一倍。

注意:我使用ID_list長度來初始化數組,如果您只需要一些列,這會更好。

編輯:

這是一個示例,顯示2D數組只是數組的數組。

int[][] original = {
    {1,2,3},
    {4,5,6}
};

int[][] copy = new int[1][];
copy[0] = original[0];

System.out.println(original[0]);
System.out.println(copy[0]);

System.out.println(Arrays.toString(original[0]));
System.out.println(Arrays.toString(copy[0]));
original[0][1] = 7;
System.out.println(Arrays.toString(original[0]));
System.out.println(Arrays.toString(copy[0]));

將輸出

[I@3941a79c //change on each run
[I@3941a79c
[1, 2, 3] //original[0]
[1, 2, 3] //copy[0]
[1, 7, 3] //original[0] after the update
[1, 7, 3] //copy[0]

這是有關Arrays成員的JSL。 這可能很有趣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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