Amigos
Boa tarde,
Ultimamente tenho focado em exercícios aleatórios, só para fixar a lógica. Neste abaixo, crio 3 listas, uma com os divisíveis por 4 até 1000, e a outra com os de 6. Comparo os divisíveis que são iguais, adicionando todos em uma terceira lista, ordenando e trazendo os repetidos. Porém, o último "for" só esta indo ate a 51º posição do array "comparador". Não retorna erro, mas só trás os 11 primeiros valores repetidos, e não segue ate o comparador.size(). Alguém saberia me dizer o porque ? Estou quebrando a cabeça e realmente não achei solução.
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
public class MultiplosArrays {
public static void main(String[] args) {
ArrayList<Integer> list1 = new ArrayList();
ArrayList<Integer> list2 = new ArrayList();
ArrayList<Integer> comparador = new ArrayList();
int a = 4;
int b = 6;
for (int i = 0; i < 1000; i++) {
if (i % a == 0) {
list1.add(i);
}
}
for (int i = 0; i < 1000; i++) {
if (i % b == 0) {
list2.add(i);
}
}
System.out.println("----LIST1----");
System.out.println("1000 por " + a + " - " + list1.size());
for (int i = 0; i < list1.size(); i++) {
comparador.add(list1.get(i));
}
System.out.println("----LIST2----");
System.out.println("1000 por " + b + " - " + list2.size());
for (int i = 0; i < list2.size(); i++) {
comparador.add(list2.get(i));
}
System.out.println("----Valores iguais em ambas as listas----");
Collections.sort(comparador);
int c = 0;
System.out.println("Tamanho do comparador = " + comparador.size());
for (int i = 1; i < comparador.size(); i++) {
if (comparador.get(i) == comparador.get(i - 1)) {
System.out.println(i + "º - " + comparador.get(i));
c++;
}
}
System.out.println("Total de valores iguais = " + c);
}
}
O Resultado é:
----LIST1----
1000 por 4 - 250
----LIST2----
1000 por 6 - 167
----Valores iguais em ambas as listas----
Tamanho do comparador = 417
1º - 0
6º - 12
11º - 24
16º - 36
21º - 48
26º - 60
31º - 72
36º - 84
41º - 96
46º - 108
51º - 120
Total de valores iguais = 11