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

java、json、对齐每个对象中的开始日期和结束日期,java,Java,我想比较price对象中每个对象的日期,确保日期不重叠,也不存在间隔。在下面的json中,日期是正确的。当您阅读第一个对象、最后一个对象和第二个对象时,您将看到日期是对齐的。是否有一种算法可以帮助实现这一点 "prices": [ { "effectiveFrom": "", "effectiveUntil": "2015-12-01T05:00:00.00Z", "priceAmount": 11,

我想比较price对象中每个对象的日期,确保日期不重叠,也不存在间隔。在下面的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;

        }

您只需要按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;
prices=sort(…);
对于(i=0;i
什么是最有效的排序方式?我想我需要对索引进行排序如果您有一个Price对象列表,您可以使用Collections.sort()和一个自定义比较器,该比较器返回比较两个价格的起始日期的结果(确保处理起始日期为null的情况)。