我有一个像这样的功能
public int function1(int [][] arr) {
for (int i=0; i < arr.length; i++) {
for (int j=0; j < arr[].length; j++) {
**uniqueH(arr[])**
}
}
}
在UniqueH()
中,我只想传递一行2D数组。
UniqueH (int arr1[]) {
}
答案 0 :(得分:2)
你的代码并不遥远。当您想要将单个1D切片作为一行传递时,只需使用行号作为2D数组的第一个索引:
public int function1(int [][] arr) {
for (int i=0; i < arr.length; i++) {
uniqueH(arr[i]);
}
}
答案 1 :(得分:0)
您需要将一行或切成一列 - 您可以稍微调整一下并使用Integer
代替int
并使用Iterable
。< / p>
class Sliced<T> {
final T[][] data;
public Sliced(T[][] data) {
this.data = data;
}
public Iterable<T> row(int i) {
// Just make a list.
return Arrays.asList(data[i]);
}
public Iterable<T> col(int i) {
return new Iterable<T>() {
@Override
public Iterator<T> iterator() {
return new Iterator<T>() {
int row = 0;
@Override
public boolean hasNext() {
return row < data.length;
}
@Override
public T next() {
return data[row++][i];
}
};
}
};
}
}
public void test() {
System.out.println("Hello");
Integer[][] a = {
{1, 2, 3, 4, 5},
{1, 2, 3, 4, 5},
{1, 2, 3, 4, 5},
{1, 2, 3, 4, 5},
};
for ( Integer v : new Sliced<>(a).col(1)) {
System.out.println(v);
}
for ( Integer v : new Sliced<>(a).row(1)) {
System.out.println(v);
}
}