La forma más rápida de recrear el ArrayList en un bucle for

En Java, utilizando la siguiente función para una gran matriz X para imprimir sus elementos distintos de columna:

// 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);
    }
}

Primero itero por columnas (índice j) y dentro por filas (índice i).

Esta función se llamará millones de veces para diferentes matrices, por lo que el código debe optimizarse para cumplir con los requisitos de rendimiento. Me estoy preguntando acerca de la matriz de valores. ¿Sería más rápido de usarvalues = new ArrayList<Integer>(); ovalues = null en lugar devalues.clear() ?

Respuestas a la pregunta(4)

Su respuesta a la pregunta