java,json,对齐每个对象中的开始日期和结束日期

时间:2015-11-24 19:47:37

标签: java

我想比较价格对象中每个对象的日期,并确保日期不重叠,两者之间也有差距。在下面的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;

        }

1 个答案:

答案 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;