在Java中检查大于和小于的最有效方法是什么?

时间:2013-08-31 17:22:44

标签: java compare

检查此内容的最有效方法是什么:

A is scheduled for 4 - 7;
B is scheduled for 5 - 8;

上面的时间表重叠。如果A和B在以下示例中重叠或如何重叠,我该如何检查Java:

对于A

int start = 4;
int end = 7;

对于B

int start = 5;
int end = 8;

请告知最有效的方法来检查是否重叠。 谢谢

3 个答案:

答案 0 :(得分:2)

最有效的方法是使用interval tree

答案 1 :(得分:1)

以下逻辑应该用于测试重叠。这是从结束日期开始向后工作的负离散检查。其他检查方法是采用参考开始时间,如data.getTime()

private boolean testOverlap(Date sched1Start, Date sched1End, Date sched2Start, Date sched2End) {

    //Validate ranges to check if End dates are after start dates

    //Overlaps if both schedules end at same time
    if(sched1End.equals(sched2End)) return true;

    //Get which one ends last
    if(sched1End.before(sched2End)) {

        //Working backwards sched2 starts after sched1 Ends so they dont overlap
        if(sched2Start.after(sched1End) || sched2Start.equals(sched1End)) {
            //Doesnt overlap
            return false;
        }

    } else {
        //Sched1 ends last
        if(sched1Start.after(sched2End) || sched1Start.equals(sched2End)) {
            //Doesnt overlap
            return false;
        }
    }
    return true;
}

答案 2 :(得分:0)

如果您只是处理一些数据,那么即使只是比较开始和结束也足够快。但是,如果您正在处理大数据,则可能需要使用其他数据结构(如增强树)来获得一些效率。