Mmmhh.., no lo veo claro lo de hacerlo con un array / ArrayList....
Hace poco hice un ejercicio similar y lo hice usando una matriz donde tenía "parejas" de caracteres, es decir, el carácter "normal" junto con el carácter/cadena que lo sustituye.
public class Ofuscar {
private final static String[][] TABLA = new String[][] {
{"A","4"},{"a","@"},{"B","8"},{"C","(("},
{"D","))"},{"E","3"},{"e","?"},{"G","6"},
{"H","#"},{"I","|"},{"i","1"},{"J","!"},
{"O","0"},{"o","*"},{"P","9"},{"S","$$"},
{"s","2"},{"T","7"},{"t","+"},{"V","\\/"},
{"Y","&"}
};
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);
System.out.print("Introduce password: ");
String pass = teclado.nextLine();
teclado.close();
//Construiremos un nuevo String con las letras originales y las ofuscadas
StringBuilder passOfuscado = new StringBuilder();
for (int i = 0; i < pass.length(); i++) {
//Seleccionamos letra original
String letra = pass.substring(i, i+1);
//Con un boolean controlamos si la letra sera ofuscada o no
boolean ofuscada = false;
//Recorremos la TABLA
for (int j = 0; j < TABLA.length; j++) {
if (letra.equals(TABLA[j][0])) {
//Letra existe en la TABLA, agregamos su equivalente ofuscado
passOfuscado.append(TABLA[j][1]);
ofuscada = true; //La letra ha sido ofuscada
break; //Ya no es necesario seguir recorriendo la TABLA para la letra actual
}
}
//Si la letra NO ha sido ofuscada, debemos agregar la letra original
if (!ofuscada)
passOfuscado.append(letra);
}
//Proceso de ofuscacion terminado
System.out.println("\nPassword ofuscado: " + passOfuscado.toString());
}
}
Se podría adaptar cambiando las "parejas" de la TABLA para que sean como las del "abecedario" de tu ejercicio.
El resto del código podría quedarse igual, aunque de hecho, se podría simplificar porque en tu ejercicio se han de sustituir todas los caracteres y en el que yo hice algunos se sustituían y otros no.
Usando un ArrayList, no veo cómo almacenar las "parejas".
A no ser que en el ArrayList guardemos pequeños arrays de 2 elementos para tener las parejas.
Aunque eso sería precisamente crear una matriz...
Mira a ver si lo de la matriz te sirve e intenta adaptar mi código para tu ejercicio. Si no lo consigues, dilo y te ayudamos.
Un saludo.