Поскольку у вас есть колода карт, вы должны просто сохранить карты в списке (представляющем колоду) и перемешать этот список.
Если мне все еще нужно решить общую проблему перетасовки 2d-массиваЯ бы, вероятно, сделал бы представление списка 2d-массива и перебрал бы его, вот так:
import java.util.AbstractList;
public class TwoDimensionalArrayViewList extends AbstractList implements RandomAccess {
private Object[][] array;
public TwoDimensionalArrayViewList(Object[][] array) {
this.array = array;
}
@Override
public Object get(int index) {
int row = rowForIndex(index);
int column = columnForIndex(index);
return array[row][column];
}
private int columnForIndex(int index) {
return index % array[0].length;
}
private int rowForIndex(int index) {
return index / array[0].length;
}
@Override
public Object set(int index, Object element) {
Object previous = get(index);
int row = rowForIndex(index);
int column = columnForIndex(index);
array[row][column] = element;
return previous;
}
@Override
public int size() {
return array.length*array[0].length;
}
}
import org.junit.Test;
import java.util.Collections;
import java.util.List;
import static org.junit.Assert.assertEquals;
public class TwoDimensionalArrayViewListTest {
@Test
public void test() {
Integer[][] array = { {1, 2, 3}, {4, 5, 6} } ;
List list = new TwoDimensionalArrayViewList(array);
assertEquals(1, list.get(0));
assertEquals(2, list.get(1));
assertEquals(3, list.get(2));
assertEquals(4, list.get(3));
assertEquals(5, list.get(4));
assertEquals(6, list.get(5));
Collections.shuffle(list);
}
}