2014-09-02 82 views
-1

您可以将此代码给我解释一下比较实时Java

import java.util.Comparator; 

public class TempsComperator implements Comparator<Time1> 
{ 

    public int compare(Time1 time1, Time1 time2) 
    { 
    int hourCompare = time1.getHour()-time2.getHour(); 
    if(hourCompare !=0) 
     return hourCompare; 

    int minuteCompare = time1.getMinute()-time2.getMinute(); 
    if(minuteCompare !=0) 
     return minuteCompare; 

    int secondCompare = time1.getSecond()-time2.getSecond(); 
    if(secondCompare !=0) 
     return secondCompare; 
    return 0; 
} 
} 
+1

请通过此链接,如果您仍有疑问,请返回.http://www.tutorialspoint.com/java/java_using_comparator.htm。我没有downvote虽然;-) – BatScream 2014-09-02 10:35:53

回答

0

就拿

time1 = 12:34:56 
time2 = 12:34:20 

现在,如果你compare这两个Time S,会发生什么情况如下:

public int compare(Time1 time1, Time1 time2) 
{ 
    //time1.getHour() returns 12; time2.getHour() returns 12; 
    int hourCompare = time1.getHour()-time2.getHour(); //hourCompare = 12-12; 
    if(hourCompare !=0) //hourCompare is 0, if-block is not entered. 
     return hourCompare; 

    //time1.getMinute() returns 34; time2.getMinute() returns 34; 
    int minuteCompare = time1.getMinute()-time2.getMinute(); //minuteCompare = 34-34; 
    if(minuteCompare !=0) //minuteCompare is 0, if-block is not entered. 
     return minuteCompare; 

    //time1.getSecond() returns 56; time2.getSecond() returns 20; 
    int secondCompare = time1.getSecond()-time2.getSecond(); //secondCompare = 56-20 
    if(secondCompare !=0) //secondCompare is 36, the if-block is entered and the value is returned. 
     return secondCompare; 
    return 0; 
} 

compare方法返回36,一个正值,表明time1是之后time2

time1.getSecond()time2.getSecond()的值相同的情况下,最后的if块也不会被输入,并且该方法最终返回0,这意味着两个Time都相等。

0

它基本上比较了该Time较高。 首先,它得到小时的差值,如果不是零,则返回差值。 负面结果意味着time2更高,正面结果意味着time1更高。

如果小时之间的差值为零,则根据分钟值确定哪一个更高。同样的逻辑适用于这里和秒部分。