我是用Java工作的,我有一个TimestampAndValue类型的对象列表:
public class TimestampAndValue{
private double value;
private long timestamp;
public long getTimestamp() {
return timestamp;
}
public void setTimestamp(long timestamp) {
this.timestamp = timestamp;
}
public double getValue() {
return value;
}
public void setValue(double value) {
this.value = value;
}
}我的清单类似于以下内容:
<代码>f 210
我想要输出这个列表:
<代码>H 120元素5:时间戳= 5,值=0<代码>H 221<代码>H 122元素6:时间戳= 6,值= 10 <代码>H 223H 124元素7:时间戳= 7,值=0<代码><代码>H 126元素8:时间戳= 11,值=0<代码H 227/代码>代码><<代码>代码>< 12 8码>代码<12码>代码代码<<2 29>代码代码<<230>代码<230><<230>代码<230><>
我会尽量解释一下我需要什么。当两个时间戳不是连续整数时,我需要在它们之间放置最小数量的零。例如,在上面列表中时间戳4和6之间的情况下,我只需要放置一个零,但是在两个时间戳相差两个或两个以上的情况下,我需要在第一个时间戳之后放置一个零,在第二个时间戳之前放置一个零。你可以在时间戳6到10之间看到这一点。我还需要放置的零有正确的时间戳集。
现在我不知道怎么解决这个问题。谢谢您一直鼓励我!
这是我用你的建议解决问题的方法:
public static List<TimestampAndValue> insertMinimumNumberOfZerosBetweenValues(List<TimestampAndValue> list){
if(list == null || list.isEmpty() || list.size() == 1)
return list;
int i;
int j;
long tempTimestamp1;
long tempTimestamp2;
long timestampDifference;
List<TimestampAndValue> outList = new ArrayList<TimestampAndValue>();
outList.add(list.get(0));
for(i=0; i<list.size()-1; i++){
j=i+1;
tempTimestamp1 = list.get(i).getTimestamp();
tempTimestamp2 = list.get(j).getTimestamp();
timestampDifference = tempTimestamp2 - tempTimestamp1;
if(timestampDifference == 2){
TimestampAndValue tav = new TimestampAndValue();
tav.setTimestamp(tempTimestamp1 + 1);
tav.setValue(0);
outList.add(tav);
}
else if(timestampDifference > 2){
TimestampAndValue tav = new TimestampAndValue();
tav.setTimestamp(tempTimestamp1 + 1);
tav.setValue(0);
outList.add(tav);
TimestampAndValue tav2 = new TimestampAndValue();
tav2.setTimestamp(tempTimestamp2 - 1);
tav2.setValue(0);
outList.add(tav2);
}
outList.add(list.get(j));
}
return outList;
}发布于 2012-04-19 16:15:04
您必须处理输入列表中的时间戳对,积累一个输出列表:
outputList = new list of timestamps;
for (int i = 0; i < numerOfTimestamps-1; i++) {
timestamp1 = inputList.get(i);
timestamp2 = inputList.get(i+1);对于每一对,比较它们之间的距离:
timestamp1添加到输出列表(timestamp1和带有0的新时间戳到输出列表(timestamp1和两个新时间戳( 0 )到输出列表H 212f 213然后
} // close loop并将最后一个时间戳添加到输出列表中。(它从来不被循环添加。)
请注意,您需要单独处理空输入列表。
发布于 2012-04-19 16:06:43
也许我没有正确地解决您的问题,但是如果时间戳不存在,您是否尝试在wich中实现一个默认值为0的机制?它将更有效率和更简单。
发布于 2012-04-19 16:14:10
这是作业吗?如果是,请按此标记。
也许我误解了这个问题,但我认为一个简单的循环应该有效。根据时间戳对列表进行排序,然后遍历所有的值。一旦找到一个不连续的时间戳,就插入一个0项。
https://stackoverflow.com/questions/10232131
复制相似问题