Ihre Notwendigkeit Auf einer Reihe oder eine Spalte zu schneiden - Sie könnte ein anpassen wenig und verwenden Sie Integer
anstelle von int
und verwenden Sie eine Iterable
.
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);
}
}