Olá pessoal estou com uma duvida sobre listas estaticas, gostaria de saber porque o método
public void insert(E element, int pos)
//desloca para a direita os elementos necessários
//abrindo espaço para um novo elemento
for(int i = numElements -1;i>=pos;i–)
elements [i+1]=elements [i]
// gostaria de saber porque tem o i+1 dentro do array ??
A resposta para essa pergunta está nas duas linhas em comentário acima do seu laço.
A cada iteração ele pega o elemento na posição atual ( i
) e coloca na próxima posição ( i + 1
).
Como esse laço executa de trás pra frente (começa na última posição e vai vinda pra posição pos
) ao final da iteração a posição pos
receberá o elemento passado por parâmetro e todos os elementos nas posições maiores que pos
estarão deslocados à direita.
Talvez se você reescrever assim, fica mais legível:
for (int i = numElements - 1; i >= pos; i--) {
int posicaoAtual = i;
int posicaoSeguinte = i + 1;
E elementoTrocandoDeLugar = elements[posicaoAtual];
elements[posicaoSeguinte] = elementoTrocandoDeLugar;