Si vous utilisez la méthode RetainAll dans la liste la, vous obtiendrez les objets communs entre les 2 listes .. \
Exemple:
examine la liste des entiers, (juste pour l'exemple) il travaillera avec votre classe ...
public static void main(String[] args) {
List<Integer> list1 = new ArrayList<Integer>(Arrays.asList(0, 1, 2, 3, 4, 5));
List<Integer> list2 = new ArrayList<Integer>(Arrays.asList(1, 3, 5));
List<Integer> list3 = new ArrayList<Integer>(list1);
list3.retainAll(list2);
System.out.println("List1:" + list1);
System.out.println("List2:" + list2);
System.out.println("List common:" + list3);
}
Dans votre cas, les contacts de classe doit être modifiée afin d'identifier peut en quelque sorte la méthode ArrayLst.retainAll() si un contact est identique à l'autre en utilisant comme critère le numéro de téléphone ...
Modifier/améliorer le contact de classe en ajoutant la HashCode et Equals:
mais vous devez utiliser comme critères que le numéro de téléphone
public class Contact {
private String name;
private int phone;
public Contact(String name, int phone) {
this.name = name;
this.phone = phone;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Contact [name=" + name + ", phone=" + phone + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + phone;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Contact other = (Contact) obj;
if (phone != other.phone)
return false;
return true;
}
public int getPhone() {
return phone;
}
public void setPhone(int phone) {
this.phone = phone;
}
}
Mettre en oeuvre la liste des contacts et appeler la méthode RetainAll
public static void main(String[] args) {
List<Contact> list1 = new ArrayList<Contact>(Arrays.asList(new Contact(UUID.randomUUID().toString(), 1),
new Contact(UUID.randomUUID().toString(), 2), new Contact(UUID.randomUUID().toString(), 3),
new Contact(UUID.randomUUID().toString(), 4), new Contact(UUID.randomUUID().toString(), 5)));
List<Contact> list2 = new ArrayList<Contact>(Arrays.asList(new Contact(UUID.randomUUID().toString(), 1),
new Contact(UUID.randomUUID().toString(), 3), new Contact(UUID.randomUUID().toString(), 5)));
List<Contact> list3 = new ArrayList<Contact>(list1);
list3.retainAll(list2);
System.out.println("List1:" + list1);
System.out.println("List2:" + list2);
System.out.println("List common:" + list3);
}
Vous devez surcharger les méthodes equals appropriées() et hashCode() mises en œuvre en contact classe pour faire ce travail. JVM utilise l'implémentation equals() pour comparer deux objets identiques ou non. – kosa
@Nambari: Comment puis-je faire ça? Je suis nouveau en Java. –
http://www.javaworld.com/article/2073330/the-contains-trap-in-java-collections.html pourrait être un bon exemple/ – kosa