日期:2014-05-20  浏览次数:21137 次

怎么把两个List内容加到一个List
比如:
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 = list1;
list3.removeAll(list2);
list3.addAll(list2);
------解决方案--------------------
我又转回来了,我上面的方法确实只有相同对象才能去掉。不过,稍作改动,重载Form的equals方法就可以实现。

public boolean equals(Object obj){
……
Form f = (Form)obj;
if(f.getUserId().equals(this.getUserId()) &&
f.getUserName().equals(this.getUserName()))
return true;
else
return false;

}
------解决方案--------------------
重载equals()、hashCode()方法是可行的,不过容易出现扩展问题。
个人觉得实现Comparator接口比较好。纯属个人意见^_^。
------解决方案--------------------
不能自己更改就继承再重载
------解决方案--------------------
如果不能改form,那就自己再写一个类包装form类吧,包装类重载equals和hashCode方法。