Troca de valores em Listas Encadeadas

Pessoal eu fiz um codigo que acha dois valores quais quer dentro de uma lista e faz a troca. Mas só o metodo só inverte um deles e o outro mantem o mesmo numero. Isto é para ser feito
Exemplo
0-5-10-15-20
saida
0-15-10-5-20

e o meu ta saindo assim:
0-5-10-15-20
saida
0-15-10-15-20

o codigo é esse:

  public void trocadevalor(int valor1, int valor2){   
           
        No tmp = primeiro;   
        No tmp1= primeiro;   
           
        while((tmp.getProx()!=null)&&(tmp.getValor()!=valor1)){   
          tmp = tmp.getProx();   
        }   
           
        while((tmp1.getProx()!=null)&&(tmp1.getValor()!=valor2)){   
            tmp1 = tmp1.getProx();   
        }   
          if(tmp !=null && tmp1 != null){
          
          No aux = tmp.getProx();
          tmp.setValor(tmp1.getValor());
          aux = tmp;
          
          No aux1 = tmp1.getProx();
          tmp1.setValor(tmp.getValor());
          aux1 = tmp1;
         }           
} 

No programa principal uso dois metodos. o console que mostra na tela a lista e o outro inverte os valores. Eu to usando isso aqui no programa principal.

l.console();
		l.trocadevalor(5,15);
	
		l.console();

Grato pela ajuda.

Nao da para escrever muito pois minha empresa controla o tamanho do post :???: um post grande não da para fazer bahh

Olha o que vc faz na troca, seu aux naum serve para nada… nada mesmo, tah sem logica.

faz assim:

          T aux = tmp.getValor();
          tmp.setValor(tmp1.getValor());
          tmp1.setValor(aux); 

obs: Mesmo assim ainda esta errado, o certo eh vc trocar os nós de posição e não alterar o valor deles, mas não da para explicar e mostrar agora.