我想比较价格对象中每个对象的日期,并确保日期不重叠,两者之间也有差距。在下面的json中,日期是正确的。当您读取第一个对象,最后一个对象和第二个对象时,您将看到日期已对齐。有没有一种算法可以帮助实现这一目标?
"prices": [
{
"effectiveFrom": "",
"effectiveUntil": "2015-12-01T05:00:00.00Z",
"priceAmount": 11,
},
{
"effectiveFrom": "2016-01-01T05:00:00.00Z",
"effectiveUntil": "",
"priceAmount": 11,
},
{
"effectiveFrom": "2015-12-01T05:00:00.00Z",
"effectiveUntil": "2016-01-01T05:00:00.00Z",
"priceAmount": 5,
}
现在,我正在按索引检查索引,但这并不理想,因为我可以拥有3个以上的对象,然后逻辑会搞砸...
if (i==0)
{
if (!endDate.equals(promoStartDate)) correctDates = false;
}
//after promotion ends
if (i==1)
{
if (!startDate.equals(promoEndDate)) correctDates = false;
}
//during promotion period
if (i==2)
{
if (!startDate.equals(promoStartDate) && !endDate.equals(promoEndDate)) correctDates = false;
}
答案 0 :(得分:2)
你只需要通过startdate对所有对象进行排序,然后迭代抛出它们并检查一个对象的enddate是否等于下一个对象的startdate。
在伪代码中:
prices = sort(...);
for (i = 0; i < prices.size()-1; i++) {
if (prices[i].enddate != prices[i+1].startdate) return false;
}
return true;