检查响应中的重复值

时间:2014-07-19 09:18:38

标签: java android algorithm

我在数据库中有一个包含3个值的表,pid和fid。如下所示:

  ---------------------
  | did  | fid |  pid |
  --------------------|
  | 259  | 431 | 128  |
  --------------------|
  | 259  | 431 | 132  |
  |-------------------|
  | 260  | 432 | 128  |
  --------------------|
  | 260  | 432 | 129  |
  |-------------------|
  | 260  | 432 | 132  |
  |-------------------|
  | 261  | 460 | 128  |
  --------------------|
  | 261  | 460 | 132  |
  |-------------------|

现在是否有任何新条目出现。我想在表格中检查它是否存在。它们都不是唯一的。在回复中,一个人必须是uniuqe,所有这些对于新的条目都不能相同。

我目前使用的是双for loop,但无效。

提前致谢

EDITED

public class DetailingTripleCheck {

private int nid;
private int did;
private int fid;

public DetailingTripleCheck() {
    // TODO Auto-generated constructor stub
}

public DetailingTripleCheck(int nid, int did, int fid) {
    this.nid = nid;
    this.did = ddnid;
    this.fid = fid;
}

public int getNid() {
    return nid;
}

public void setNid(int nid) {
    this.nid = nid;
}

public int getDid() {
    return did;
}

public void setDid(int did) {
    this.did = did;
}

public int getFid() {
    return fid;
}

public void setFid(int fid) {
    this.fid = fid;
}

@Override
public boolean equals(Object o) {
    // TODO Auto-generated method stub
    return super.equals(o);
}

@Override
public int hashCode() {
    // TODO Auto-generated method stub
    return super.hashCode();
}

}

我正在使用此课程:

for (int i = 0; i < NewDids.length; i++) {
                    if (OldDids.length > 0) {
                        DetailingTripleCheck ddSet = new DetailingTripleCheck();
                        ddSet.setDdnid(Integer.parseInt(NewDids[i]));
                        ddSet.setProdNid(Integer.parseInt(NewNids[i]));
                        ddSet.setFid(Integer.parseInt(Newfids[i]));
                        HashSet<DetailingTripleCheck> set = new HashSet<DetailingTripleCheck>();

                        for (int j = 0; j < OldDids.length; j++) {
                            DetailingTripleCheck triple = new DetailingTripleCheck(
                                    Integer.parseInt(OldDids[j]),
                                    Integer.parseInt(OldNids[j]),
                                    Integer.parseInt(OldFids[j]));
                            if (set.contains(triple)) {
                                System.out.println("TRUE");


                            } else {
                                System.out.println("FALSE");


                            }
                       }
}

1 个答案:

答案 0 :(得分:1)

假设字段为int s(如果假设错误,则易于修改)。

创建一个名为Triple的新类,其中包含3个字段:

class Triple { 
  int did, fid, pid;
  Triple(int did, int fid, int pid) { 
     this.did = did;
     this.fid = fid;
     this.pid = pid;
  }
  ... 
}

确保override hashCode() and equals()(Eclipse IDE可以帮助您自动执行此操作)。

现在,将您的数据存储在HashSet

HashSet<Triple> set = new HashSet<>();

添加元素后,使用contains()方法检查它是否已存在,如果不存在,则将其添加到集合中。

Triple triple = new Triple(did,fid,pid)
if set.contains(triple) { 
   //do something
} else { 
   set.add(triple) 
}