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;
}
}
}