我在数据库中有一个包含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");
}
}
}
答案 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)
}