Una forma más eficiente de eliminar elementos de una lista de matriz

He desarrollado una lista de matrices algo como esto

ArrayList<String> list = new ArrayList<String>();
list.add("1");
list.add("8");
list.add("8");
list.add("3");
list.add("4");

Ahora mi pregunta es: si quiero eliminar los "8" de la lista, ¿cuál es la mejor manera?

primera forma:

for(int i = 0; i < list.size(); i++) {
    if(list.get(i).equals("8")) {
        list.remove(i);
        i--;
    }
}

segunda forma:

Iterator<String> iterator = list.iterator();
    while(iterator.hasNext())
        if(iterator.next().equals("8"))
            iterator.remove();

Ahora, por favor, indique cuál de ellos es más eficiente y más rápido desde el punto de vista del rendimiento y también hay alguna otra forma que sea algo así como una función incorporada al usarla, podemos eliminar duplicados sin iterar tanto.