比如:
List1和List2里面每条记录都是form类型。
form里面包含userId,userName三个元素。
现在将上面的List1,List2里面的记录都追到第三个新的list3中,要求list3中不包含数据相同的记录。也就是说list1和list2中都有userId="1",userName="aa"的form(这两个form只是userId,userName值相等,内存地址不同),追加到list3后,list3中只能有一条(userId="1",userName="aa")的form。
请给出最简便的做法。
List1和List2里面每条记录都是form类型。
form里面包含userId,userName三个元素。
现在将上面的List1,List2里面的记录都追到第三个新的list3中,要求list3中不包含数据相同的记录。也就是说list1和list2中都有userId="1",userName="aa"的form(这两个form只是userId,userName值相等,内存地址不同),追加到list3后,list3中只能有一条(userId="1",userName="aa")的form。
请给出最简便的做法。
list3.removeAll(list2);
list3.addAll(list2);
List list2 = new ArrayList();
List list3 = new ArrayList(list1);for (int i = 0; i < list2.size(); i++) {
if (!hasSameElement(list3, (Form)list2.get(i))) {
list3.add(list2.get(i));
}
}
-----------------------------------------------------------------private boolean isSameForm(Form form1, Form form2) {
return form1.getId().equals(form2.getId());
}public boolean hasSameElement(List list, Form form) {
for (int i = 0; i < list.size(); i++) {
Form form1 = (Form)list.get(i);
if (isSameForm(form1, form)) {
return true;
}
}
return false;
}
当然,如果你的类可以实现Comparator,会更简单一点。
……
Form f = (Form)obj;
if(f.getUserId().equals(this.getUserId()) &&
f.getUserName().equals(this.getUserName()))
return true;
else
return false; }
Set.addAll
Set.toArray --> form[]
form[]--> Arrays.asList --List
个人觉得实现Comparator接口比较好。纯属个人意见^_^。
希望还有高手能列出一些其他方法供大家学习!两天后再散分结贴。