问候,
我有一个永远不会过去的简单条件:
if(datas.date.getTime()-temps.date.getTime()>=5000)
我想检查一下是否有5秒钟。
更新:
这是setter和getter:
public class Data{
Date date;
public Date getDate() {
return date;
}
public void setDate() {
Date now = new Date();
this.date = now;
}
}
所以,我打电话给
Data data;
data.setDate();
processValues(data);
这是processValues:
public void processValues(Data dat){
if(datas.size()==7){
writeValues(datas);
datas=new Vector<Data>();
temps=new Vector<Data>();
}
temps.add(dat);
datas.add(dat);
}
这是writeValues:
public void writeValues(Vector<Data> datas){
for(i=0;i<temps.size();i++)
for(j=0;j<datas.size();j++){
if(temps.elementAt(i).epc==datas.elementAt(j).epc)
if(datas.elementAt(j).date.getTime()-temps.elementAt(i).date.getTime()>=5000)
try {
dao.writeToDatabase(datas.elementAt(j));
i=j;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
答案 0 :(得分:0)
如果输出datas.date.getTime()
和temps.date.getTime()
,哪一个更高?我的猜测是它们被颠倒了,减法给出了一个负数 - 当然绝不会超过5000.或者数据点不是相隔5秒。
答案 1 :(得分:0)
你说你有一个看起来像这样的吸气剂:
public Date getDate() {
return date;
}
Date
个对象是可变的,所以你应该可以防御性地复制。您可以使用clone()
。
根据你和你的问题的症状,也许你的两个Date
对象实际上是同一个对象。您是否尝试过使用==
(或!=
)来确认它们确实是独立的对象?
根据更新的信息,我可以看到为什么这种情况永远不会过去。但是,我真的不明白你希望你的代码做什么。你基本上只是测试你是否可以在不到5秒的时间内创建7个对象,如果你不能,那么你可以写出其中的一些。无论哪种方式,您都可以清除temps
和datas
,无论您是否写出对象。我的猜测是你不想清除这些未写出的元素向量。我也不知道为什么当datas
和temps
包含完全相同的元素时,为什么同时包含{{1}}和{{1}}。
答案 2 :(得分:0)
你说你的processValues()方法如下所示:
public void processValues(Data dat){
if(datas.size()==7){
writeValues(datas);
datas=new Vector<Data>();
temps=new Vector<Data>();
}
temps.add(dat);
datas.add(dat);
}
您正在向两个向量添加相同的实例(“dat”)。如果你更新一个,它必然会更新另一个,所以date
字段永远不会有差异。