就我而言,我有两个哈希集,一组包含 friend 的姓名和号码,另一组
包含现有 friend 的姓名和电话号码,此数据从数据库检索并存储到集中
如何比较和删除拖曳集和存储在新集中的交集数据中的重复项?
我需要在google中使用的代码,我在比较器中看到了比较器,它们只使用了一组,但就我而言,我正在检查两套,对不起我的英语不好
最佳答案
假设我们有set1和set2我们可以执行以下操作
Set set3 = new HashSet(set1);
set3.retainAll(set2);
set1.removeAll(set3);
set2.removeAll(set3);
你的情况是
public class Friend {
String name;
String number;
public Friend(String name, String number) {
this.name = name;
this.number = number;
}
@Override
public int hashCode() {
return name.hashCode() + 31 * number.hashCode();
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof Friend)) {
return false;
}
Friend other = (Friend)obj;
return other.number.equals(number) && other.name.equals(name);
}
@Override
public String toString() {
return name + "-" + number;
}
}
public static void main(String[] args) throws Exception {
Set<Friend> set1 = new HashSet<Friend>();
set1.add(new Friend("Karthik", "111"));
set1.add(new Friend("Mani", "222"));
set1.add(new Friend("Karthik", "111"));
set1.add(new Friend("Mani", "444"));
set1.add(new Friend("Karthik", "111"));
Set<Friend> set2 = new HashSet<Friend>();
set2.add(new Friend("Karthik", "111"));
set2.add(new Friend("Raju", "3333"));
Set<Friend> set3 = new HashSet<Friend>(set1);
set3.retainAll(set2);
set1.removeAll(set3);
set2.removeAll(set3);
System.out.println(set1);
System.out.println(set2);
}
输出
[Mani-444, Mani-222]
[Raju-3333]