需要澄清以下if else声明

时间:2015-03-19 12:26:09

标签: java

  public int compare(final Item i1, final Item i2) {
        final Float itemCode1 = i1.getItemCode();
        final Float itemCode2 = i2.getItemCode();

        return itemCode1 == null ? -1 :
               itemCode2 == null ? 1 :
               i1.getItemCode().compareTo(itemCode2);}

这是一个我需要澄清的代码段。提前感谢任何帮助

4 个答案:

答案 0 :(得分:1)

它比较了两个Item个对象。

如果第一个Item代码为空,则返回-1,这意味着第一个Item将在第二个Item之前订购。

否则,如果第二个Item代码为空,则返回1,这意味着第二个Item将在第一个Item之前订购。

否则将比较两个项目代码(两个浮点数的比较),并且该比较的结果将决定顺序。

答案 1 :(得分:0)

这是一个令你烦恼的漂亮的双重地狱吗?

它的含义与:

相同
If(itemCode1 == null)
    return -1;
else if (itemCode2 == null)
    return 1;
else
    return i1.getItemCode().compareTo(itemCode2);

你可以看到使用多个ternaires是不是很可读,所以避免这个pratice;)

答案 2 :(得分:0)

这相当于以下代码:

public int compare(final Item i1, final Item i2) {
    final Float itemCode1 = i1.getItemCode();
    final Float itemCode2 = i2.getItemCode();

    if (itemCode1 == null) {
        return -1;
    } else if (itemCode2 == null) {
        return 1;
    } else {
        // I changed from i1.getItemCode() to itemCode1
        return itemCode1.compareTo(itemCode2);
    }
}

答案 3 :(得分:-1)

if(itemCode1 == null) 
{
 //-1
}
else{
   if( itemCode2 ==null){
     {//1}
   else{
i1.getItemCode().compareTo(itemCode2)
}