Maneira mais rápida de recriar o ArrayList em um loop for

Em Java, usando a seguinte função para uma matriz enorme X para imprimir seus elementos distintos da coluna:

// create the list of distinct values
List<Integer> values = new ArrayList<Integer>();

// X is n * m int[][] matrix
for (int j = 0, x; j < m; j++) {
    values.clear();
    for (int i = 0; i < n; i++) {
        x = X[i][j];
        if (values.contains(x)) continue;
        System.out.println(x);
        values.add(x);
    }
}

Primeiro eu iterar por colunas (índice j) e dentro por linhas (índice i).

Essa função será chamada milhões de vezes para matrizes diferentes, portanto, o código deve ser otimizado para atender aos requisitos de desempenho. Eu estou querendo saber sobre a matriz de valores. Seria mais rápido usarvalues = new ArrayList<Integer>(); ouvalues = null ao invés devalues.clear() ?

questionAnswers(4)

yourAnswerToTheQuestion