Maneira mais eficiente de remover elementos de uma lista de matriz

Eu desenvolvi uma lista de matriz algo como isto

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

Agora a minha pergunta é: se eu quiser remover os "8" da lista, qual é o melhor caminho?

primeiro caminho:

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

segunda maneira:

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

Agora, por favor, informe qual deles é mais eficiente e mais rápido do ponto de vista do desempenho e também existe alguma outra forma que é algo como construído em função, usando-o podemos remover duplicado sem iterar muito.

questionAnswers(3)

yourAnswerToTheQuestion