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