我正在使用 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;
}
}
我的清单与此类似:
- 元素 1:时间戳 = 0,值 = 5
- 元素 2:时间戳 = 4,值 = 6
- 元素 3:时间戳 = 6,值 = 10
- 元素 4:时间戳 = 12,值 = 1
我想在输出中有这个列表:
- 元素 1:时间戳 = 0,值 = 5
- 元素 2:时间戳 = 1,值 = 0
- 元素 3:时间戳 = 3,值 = 0
- 元素 4:时间戳 = 4,值 = 6
- 元素 5:时间戳 = 5,值 = 0
- 元素 6:时间戳 = 6,值 = 10
- 元素 7:时间戳 = 7,值 = 0
- 元素 8:时间戳 = 11,值 = 0
- 元素 9:时间戳 = 12,值 = 1
我将尝试简短地解释我需要什么。当两个时间戳不是连续的整数时,我需要在它们之间放置最小数量的零。例如,在上面列表中的时间戳 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;
}