Prima di iniziare, penso che questa domanda abbia una risposta molto semplice a cui sto semplicemente guardando. Ho pensato che qualche altro sguardo sulla domanda in questione sarà in grado di evidenziare il mio problema abbastanza velocemente.Come rimuovere oggetti duplicati da due elenchi di array distinti?
Ho due elenchi di array che voglio confrontare e rimuovere i duplicati da ciascuno di essi. Il primo ArrayList
è un ArrayList
di informazioni precedenti in cui il secondo ArrayList
contiene le nuove informazioni.
Come così
ArrayList<Person> contactList = new ArrayList();
contactList.add(new Person("Bob");
contactList.add(new Person("Jake");
contactList.add(new Person("Joe");
ontactList.add(new Person("Rob");
ArrayList<Person> updatedContactList = new ArrayList();
updatedContactList.add(new Person("Bob");
updatedContactList.add(new Person("Jake");
updatedContactList.add(new Person("Joe");
updatedContactList.add(new Person("Phil");
La mia classe Person
è molto semplice, creato esclusivamente per questo esempio
public class Person {
private String name;
public Person(String a_name) {
name = a_name;
}
public String getName() {
return name;
}
}
Quindi, utilizzando gli esempi di cui sopra, voglio rimuovere tutti i duplicati. Sto tentando di mantenere solo le due liste di array, se possibile, ma sono disposto a fare un clone profondo di una delle liste di array, se necessario.
quindi voglio il conseguente ArrayList
di avere le seguenti informazioni in esso una volta che il confronto è fatto
Ecco il codice che ho messo insieme
for(int i = 0; i < contactList.size(); i++) {
for(int j = 0; j < updatedContactList.size(); j++) {
if(contactList.get(i).getName().equals(updatedContactList.get(j).getName())) {
//removed friends
contactList.remove(contactList.get(i));
//new friends ---- only one at a time works
//updatedContactList.remove(updatedContactList.get(j));
}
}
}
Sono solo in grado per rimuovere una persona da una delle liste array nel ciclo precedente altrimenti ottengo risultati errati.
Quindi la mia domanda è, c'è un modo semplice per rimuovere gli elementi duplicati da entrambe le liste di array? Se è così, come faccio a farlo.
Mi rendo conto che probabilmente ho potuto clonare in profondità l'aggiornato ArrayList
e rimuovere solo gli oggetti da quello, ma mi chiedo se c'è un modo senza doverlo clonare.
Mi rendo anche conto che potrei semplicemente inserire tutti gli elementi in un Set e rimuovere i duplicati, ma voglio mantenere separati gli oggetti "rimossi" e "nuovi" Person.
Suppongo che le singole liste non abbiano duplicati, corretto? – arshajii
@arshajii Una volta eseguito il confronto, ogni elenco non deve contenere duplicati tra i due. Un ArrayList conterrà il 'Person' (s) rimosso e l'altro ArrayList conterrà solo nuovi oggetti' Person'. – WilliamShatner
Intendo prima mano, prima che venga fatto qualcosa ai due elenchi. Ad esempio, non puoi avere due 'Bob' in' contactList', giusto? – arshajii