我在Java中工作,我有型TimestampAndValue的對象的列表:用零填充列表中的Java
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:添estamp = 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;
}
謝謝!我用你的建議來寫我需要的方法!我也發佈了我的代碼。 – user1284267 2012-04-20 09:28:41