Como estamos trabalhando com ArrayList e não existe o método .insert() , eliminamos a alternativa A
Por sua vez, a sintaxe da alternativa D está incorreta, em ArrayList utilizamos métodos para manipular o array e não atribuição simples conforme a alternativa.
Sabemos que a primeira posição do array é a de nº 0, portanto a alternativa C está incorreta!
Por fim, qual a diferença entre os métodos .set() e add() ?
.set() substitui um elemento do array, por sua vez o método .add() agrega um novo elemento ao array.
Apesar da redação da questão não estar das melhores, o método correto é o .add().
a) lista.insert(x, 0);
b) lista.add(0, x); GABARITO DA QUESTÃO
c)lista.add(1, x);
d) lista[0] = x;
e) lista.set(0, x);