Sobre ArrayList manipulação do Indice

bom dia a todos, eu gostaria de tirar uma duvida sobre manipulação do indice do ArrayList para compara seus valores.

veja exemplo1:
se eu declarar assim o que é mais comum:

List<Integer> lista1 = new ArrayList<>();
lista1.add(1);
lista1.add(2);
lista1.add(3);
lista1.add(1);
lista1.add(2);
lista1.add(4);

tenho o indice:

0 = 1
1 = 2
2 = 3
3 = 1
4 = 2
5 = 4 

a minha lista cresce dinamicamente.

agora veja exemplo2:
se eu declarar assim:

List<Integer> lista1 = new ArrayList<>(Arrays.asList(123, 124)); 

tenho apenas dois indices:

0 = 123
1 = 124

aqui está a minha duvida no exemplo2, eu tenho que separa seus valores para fazer comparação, ou não, com outro arraylist.
outro exemplo:

List<Integer> lista2 = new ArrayList<>(Arrays.asList(12, 13));

indice

0 = 12
1 = 13

Alguém poderia corrirgir o meu codigo do meu exemplo de comparação, assim teria uma melhor compreensão.

ele deve exibir 1 2 3 e remover 1 2 1 3 e 2 3.

segue codigo:

package projeto2023;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

public class ComparacaoListas {
    public static void main(String[] args) {
        List<Integer> lista1 = new ArrayList<>(Arrays.asList(123, 124));
        List<Integer> lista2 = new ArrayList<>(Arrays.asList(12, 13, 14, 15, 23));
        
  obrigado.      
        int valorProcurado = 3;
        List<Integer> encontrados = new ArrayList<>();

        Iterator<Integer> iterator1 = lista1.iterator();
        while (iterator1.hasNext()) {
            int num1 = iterator1.next();
            Iterator<Integer> iterator2 = lista2.iterator();
            int count = 0;
            while (iterator2.hasNext()) {
                int num2 = iterator2.next();
                if (contemDigitos(num1, num2)) {
                    count++;
                    iterator2.remove();
                    if (count == valorProcurado) {
                        encontrados.add(num1);
                        iterator1.remove();
                        break;
                    }
                }
            }
        }
        
        System.out.println("Resultado:");
        for (int encontrado : encontrados) {
            System.out.println(encontrado);
        }
    }
    
    private static boolean contemDigitos(int num1, int num2) {
        String str1 = Integer.toString(num1);
        String str2 = Integer.toString(num2);
        for (char c : str1.toCharArray()) {
            if (str2.indexOf(c) == -1) {
                return false;
            }
        }
        return true;
    }
    }
}

Cara, você falou, falou, falou, mas não explicou o objetivo do seu programa.
Tente ser mais claro e explicar quais são os dados de entrada e o que exatamente ele deveria fazer com esses dados. Você até falou que “ele deve exibir 1 2 3 e remover 1 2 1 3 e 2 3.”, mas não explicou qual é o critério que te levou a essa conclusão.

Obrigado pela atenção, mais já resolvi.