質問の random は processing の関数だったんですね。
Java の java.util.Random を使って、配列を ArrayList に書き換える例を示します。
Java
1import java.util.Random;
2import java.util.ArrayList;
3
4class Test {
5 public static void main(String[]args) {
6 Random random = new Random();
7 int[][] array = new int[5][6];
8
9 for (int i = 0; i < 5; i++) {
10 for (int j = 0; j < 6; j++) {
11 array[i][j] = (int)random.nextInt(6)+1;
12 while (j > 0 && array[i][j] == array[i][j - 1])
13 array[i][j] = (int)random.nextInt(6)+1;
14 while (i > 0 && array[i][j] == array[i - 1][j])
15 array[i][j] = (int)random.nextInt(6)+1;
16 }
17 }
18 for (int i = 0; i < 5; i++) {
19 for (int j = 0; j < 6; j++)
20 System.out.print(" " + array[i][j]);
21 System.out.println();
22 }
23 }
24}
ArrayList では、要素は int の代わりに Integer になります。
Java
1import java.util.Random;
2import java.util.ArrayList;
3
4class Test {
5 public static void main(String[]args) {
6 Random random = new Random();
7 ArrayList<ArrayList<Integer>> array = new ArrayList<>();
8
9 for (int i = 0; i < 5; i++) {
10 array.add(new ArrayList<>());
11 for (int j = 0; j < 6; j++) {
12 array.get(i).add((int)random.nextInt(6)+1);
13 while (j > 0 && array.get(i).get(j) == array.get(i).get(j - 1))
14 array.get(i).set(j, (int)random.nextInt(6)+1);
15 while (i > 0 && array.get(i).get(j) == array.get(i - 1).get(j))
16 array.get(i).set(j, (int)random.nextInt(6)+1);
17 }
18 }
19 for (int i = 0; i < 5; i++) {
20 for (int j = 0; j < 6; j++)
21 System.out.print(" " + array.get(i).get(j));
22 System.out.println();
23 }
24 }
25}
追記
御覧のように、配列の代わりに ArrayList を使うと、
array[i][j] を array.get(i).get(j) と書かなければならなかったり、
array[i][j] = k を array.get(i).set(j, k) と書かなければならなかったりします。
なぜ、ArrayList を使いたいのかを質問に追記していただけませんか?