Java: el método replace () que usa valores de matrices está cambiando los valores de la matriz?

Estoy haciendo algo como

public static String[] list = {"a","b","c","d",}  //It gives me a NullPointeException if I didn't use static
public String encrypt(String a){
   a = a.replace(list[0],list[2]);
   a = a.replace(list[4],list[3]);
   return a;
}

y tengo otro método que simplemente lo revierte

public String decrypt(String a){
   a = a.replace(list[2],list[0]);
   a = a.replace(list[3],list[4]);
   return a;
}

Por supuesto, esto se simplifica, el código real que estoy usando usa el alfabeto completo y algunos números. Así que aquí está mi problema: si ingreso algo como123 dentroencrypt() y salengV entonces ingresongV en descifrar () me da como1q3. Solo algunas de las letras se cambian correctamente y otras no. ¿Hay algo con elreplace() método usando valores de matriz que me falta? Obviamente soy nuevo en Java.

Tambien leoProblemas de Java replace () peroreplaceAll() no funcionó

Respuestas a la pregunta(1)

Su respuesta a la pregunta