新手在这里,我正在编写一种方法来比较两个存储时间的对象。
我写了这个:
public boolean isBefore(TimeType secondTime)
{
if (_hour < secondTime._hour)
{
return true;
}
else
{
if (_hour == secondTime._hour && _minute < secondTime._minute)
{
return true;
}
else
{
if (_hour==secondTime._hour && _minute == secondTime._minute
&& _second < secondTime._second)
{
return true;
}
}
}
return false;
}
我觉得两次检查_hour == secondTime._hour有点多余,但如果没有它,则该块无效。
因为这是一个三向逻辑树(更大/更小/等于),我在这个问题上找不到任何真正的帮助,我希望能得到你们的帮助。
谢谢!
答案 0 :(得分:4)
如果速度是最重要的,请将TimeType
内部存储为一个整数,计算自定义时间(例如,当天开始)以来的秒数。然后,两个TimeType
对象之间的比较将成为单个整数比较。否则,看起来您正在优化不需要优化的代码。
答案 1 :(得分:1)
我不熟悉TimeType(谷歌也找不到它),但我的建议是将TimeTypes转换(如果可能)为毫秒并进行比较。
这将消除嵌套if / else语句的需要。
所以它会变成:
public boolean isBefore(TimeType secondTime) {
if(firstTime.toMilis() < secondTime.toMilis()) {
return true;
}
return false;
}
如果TimeType(再次,我找不到它的API)没有自己的方法转换为miliseconds,那么使用静态方法也不是很难。
答案 2 :(得分:0)
我建议删除冗余小时测试:
public boolean isBefore(TimeType secondTime)
{
if (_hour < secondTime._hour)
{
return true;
}
else if (_hour == secondTime._hour)
{
if (_minute < secondTime._minute)
{
return true;
}
else
{
if (_minute == secondTime._minute
&& _second < secondTime._second)
{
return true;
}
}
}
return false;
}
答案 3 :(得分:0)
添加另一层嵌套if
s
public boolean isBefore(TimeType secondTime)
{
if (_hour < secondTime._hour)
{
return true;
}
else if (_hour == secondTime._hour)
{
if(_minute < secondTime._minute)
{
return true;
}
else if (_minute == secondTime._minute)
{
if(_second < secondTime._second)
{
return true;
}
}
}
return false;
}
如果您不喜欢嵌套,那么您可以替换支票:
public boolean isBefore(TimeType secondTime)
{
if (_hour < secondTime._hour)
{
return true;
}
if (_hour > secondTime._hour)
{
return false;
}
//here _hour == secondTime._hour
if (_minute < secondTime._minute)
{
return true;
}
if (_minute > secondTime._minute)
{
return false;
}
//here _minute == secondTime._minute
if (_second < secondTime._second)
{
return true;
}
if (_second > secondTime._second)
{
return false;
}
return false;
}