两个list取并集

来源:互联网 发布:131458淘宝查号网 编辑:程序博客网 时间:2024/05/17 08:14

因为要用一个模糊查询autocomplete,然后默认可以查代码和名称,所以在数据库查询的时候必须进行like 两列,也许这个方式不对,但在获取了两个list进行合并的时候遇到了问题,因为list中存的是类,所以还有不少麻烦。废话不多说,直接贴代码。

                String param = "%"+aparam+"%";String sql1 = "select c.* from tp_examkc c where c.kcdm like ? and rownum <= 10  order by c.kcdm " ;String sql2 =" select c.* from tp_examkc c where c.kcmc like ? and rownum <= 10  order by c.kcdm";List<ExamKkkc> list1 = this.qeryList(sql1, param, ExamKkkc.class);List<ExamKkkc> list2 = this.qeryList(sql2, param, ExamKkkc.class);
如果list中存在 的都是简单的string或者int等类型,处理非常简单,

public static List mergeList(List list1, List list2){list1.removeAll(list2);list2.addAll(list1);return list2;}
但是因为list中存储的是类,这个时候要在 存的类中做文章了,我是走了邪道。

package com.oumasoft.tp.entity;import java.io.Serializable;/** * @date 2017-06-20 09:07:54 * @author zq.big * */public class ExamKkkc implements Serializable {/** *  */private static final long serialVersionUID = 1L;private String id;private String kcdm;private String kcmc;private String zklb;private String kksj_i;private String remark;private String kcxf;private String verify;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getKcdm() {return kcdm;}public void setKcdm(String kcdm) {this.kcdm = kcdm;}public String getZklb() {return zklb;}public void setZklb(String zklb) {this.zklb = zklb;}public String getKksj_i() {return kksj_i;}public void setKksj_i(String kksj_i) {this.kksj_i = kksj_i;}public String getRemark() {return remark;}public void setRemark(String remark) {this.remark = remark;}public String getKcmc() {return kcmc;}public void setKcmc(String kcmc) {this.kcmc = kcmc;}public static long getSerialversionuid() {return serialVersionUID;}public String getKcxf() {return kcxf;}public void setKcxf(String kcxf) {this.kcxf = kcxf;}public String getVerify() {return verify;}public void setVerify(String verify) {this.verify = verify;}public ExamKkkc(){}public ExamKkkc(String id, String kcdm, String kcmc, String zklb,String kksj_i, String remark, String kcxf, String verify) {super();this.id = id;this.kcdm = kcdm;this.kcmc = kcmc;this.zklb = zklb;this.kksj_i = kksj_i;this.remark = remark;this.kcxf = kcxf;this.verify = verify;}//在这里覆写了新的equals和hashcode的方法。       @Override  public boolean equals(Object obj) {  ExamKkkc e=(ExamKkkc)obj;   return id.equals(e.id) && kcmc.equals(e.kcmc);   } @Overridepublic int hashCode() {  String in = id + kcmc;  return in.hashCode();  } }

覆写这两个方法后,在dao层就可以做如下处理了。 简单粗暴。

List<ExamKkkc> list3 = new ArrayList<ExamKkkc>();list1.addAll(list2);Set set1 = new HashSet(list1);list3.addAll(set1);return list3;











原创粉丝点击