Oi pessoal, estou tentando fazer que o código compare dois vetores e cria um novo vetor com os elementos faltantes de ambos. Mas não sei como posso “colocar” os valores que faltam nesse novo vetor.
Tambem estou em duvida quanto a comparação que fiz no if
int[] vetor1 = new int[] { 1,2,3,4,5 };
int[] vetor2 = new int[] { 1,2,5 };
int[] result = new int[10];
for(int i = 0; i < 10; i++){
for(int j = 0; j < 10; j++){
if(vetor1[i] != (vetor2[i])){
result [] =
}
}
Não entendi o que vc quis dizer com elementos faltantes. Dê um exemplo por favor.
Transforme seu Vetor em um ArrayList:
String [] ars = new String[]{"abc", "def"};
List lista = Arrays.asList(args);
ArrayList lista = new ArrayList(lista);
Depois de transformado seu Vetor numa Lista você pode usar o comando:
lista.contains(objeto)
Sendo assim você pode fazer um for para percorrer o maior vetor e fazer a comparação com o segundo vetor.
Então crie um ArrayList para os itens faltantes:
ArrayList<Integer> lista = new ArrayList<>();
E adicione os objetos faltantes na lista:
lista.add(objeto);
1 curtida
Você quer os elementos de vetor1
que não estão em vetor2
?
Se for isso, não adianta verificar só se eles são diferentes, como você fez no seu if
. Você precisa percorrer vetor2
e verificar se o valor está contido nele (e somente se não estiver, você adiciona no array final):
int[] vetor1 = new int[] { 1, 2, 3, 4, 5 };
int[] vetor2 = new int[] { 1, 2, 5 };
int[] result = new int[vetor1.length];
int cont = 0;
for (int n1 : vetor1) { // para cada elemento de vetor1
// verificar se n1 está em vetor2
boolean esta = false;
for (int n2 : vetor2) { // verifica se n1 está em vetor2
if (n2 == n1) { // está
esta = true;
break; // já vi que n1 está em vetor2, posso parar de procurar
}
}
if (!esta) { // se n1 não estiver em vetor2, adiciona nos resultados
result[cont] = n1;
cont++;
}
}
Como não necessariamente result
ficará totalmente ocupado (pois alocamos um valor possivelmente maior que a quantidade de elementos que foram encontrados), você tem que iterar até a quantidade encontrada:
System.out.println("valores de vetor1 que não estão em vetor2:");
for (int i = 0; i < cont; i++) {
System.out.println(result[i]);
}
Como provavelmente é um exercício, “querem” que você faça manualmente. Mas uma forma mais direta é usar o que já tem pronto, e criar Set
's a partir dos arrays:
int[] vetor1 = new int[] { 1, 2, 3, 4, 5 };
int[] vetor2 = new int[] { 1, 2, 5 };
Set<Integer> s1 = Arrays.stream(vetor1).boxed().collect(Collectors.toSet());
Set<Integer> s2 = Arrays.stream(vetor2).boxed().collect(Collectors.toSet());
s1.removeAll(s2); // remove de s1 todos os elementos de s2
int[] result = s1.stream().mapToInt(Number::intValue).toArray();
System.out.println("valores de vetor1 que não estão em vetor2:");
for (int n : result) {
System.out.println(n);
}
2 curtidas
Olá, muito obrigada pela explicação. Consegui fazer por lambda