como faço para obter a diferença entre 2 arrays?
exemplo:
array1.add("bolo");
array1.add("cafe");
array1.add("cha");
array2.add("bolo");
array2.add("cafe");
array2.add("pao");
resultado esperado = “cha,pao”
como faço para obter a diferença entre 2 arrays?
exemplo:
array1.add("bolo");
array1.add("cafe");
array1.add("cha");
array2.add("bolo");
array2.add("cafe");
array2.add("pao");
resultado esperado = “cha,pao”
ArrayList<String> array1 = new ArrayList<String>();
ArrayList<String> array2 = new ArrayList<String>();
ArrayList<String> array3 = new ArrayList<String>();
array1.add("bolo");
array1.add("cafe");
array1.add("cha");
array2.add("bolo");
array2.add("cafe");
array2.add("pao");
for(int i=0;i<array1.size();i++){
if(!array1.get(i).equals(array2.get(i))){
array3.add(array1.get(i));
array3.add(array2.get(i));
}
}
for(String s: array3)
System.out.println(s);
era só isso mesmo?
Ou então utilize o método remove da lista…
Tb tinha outro método que já fazia a interseção automáticamente, só dar uma procurada nos métodos. Dica: quando kiser fazer algo, apenas veja o autocomplete dos métodos em sua IDE que muitas vezes vc já encontra a resposta.
realmente é mais prático. Não tinha pensado nessa possibilidade. Valeu! 
que método é esse que faz intersecção automática?
walissongpi seu método não funciona se “cha” e “pao” estiverem numa posição aleatória do indice:
ex:
array1.add("bolo");
array1.add("cha");
array1.add("cafe");
array2.add("bolo");
array2.add("cafe");
array2.add("pao");
walissongpi seu método não funciona se "cha" e "pao" estiverem numa posição aleatória do indice:ex:
array1.add("bolo"); array1.add("cha"); array1.add("cafe"); array2.add("bolo"); array2.add("cafe"); array2.add("pao");
hum... Pensei nisso tbm, mas como não foi reletado isso, não fiz. Mas resolveria de maneira fácil colocando mais um comando for.
vlw pelas dicas pessoal, mas eu consegui resolver utilizando esta função que desenvolvi, cheia de variaveis
kkkkk
public static List<String> difference(List<String> l1,List<String> l2){
List <String> resp = new ArrayList<String>();
List <String> aux = new ArrayList<String>();
for(int i=0;i<l1.size();i++){
for (int j=0;j<l2.size();j++){
if (l1.get(i).equalsIgnoreCase(l2.get(j))){
if (!aux.contains(l2.get(j).toString()))
aux.add(l1.get(i));
}
}
}
resp.addAll(l1);
resp.addAll(l2);
resp.removeAll(aux);
return resp;
}
Podes fazer algo do tipo também:
public static Collection differences(Collection coll1, Collection coll2) {
Collection result = new ArrayList();
result.addAll(subtract(coll1, coll2));
result.addAll(subtract(coll2, coll1));
return result;
}
public static Collection subtract(Collection coll1, Collection coll2) {
Collection result = new ArrayList(coll2);
result.removeAll(coll1);
return result;
}
public static void main(String[] args) throws ScriptException, IOException {
List<String> array1 = Lists.newArrayList();
array1.add("bolo");
array1.add("cafe");
array1.add("cha");
List<String> array2 = Lists.newArrayList();
array2.add("bolo");
array2.add("cafe");
array2.add("pao");
Collection subtract = differences(array1, array2);
System.out.println(subtract); // [pao, cha]
}