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