2015-03-19 3 views
-3
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);} 

Это фрагмент кода, на котором мне нужно clarification.Thanks заранее за любую помощьнужны разъяснения по ниже, если еще заявление

+1

Что именно вам нужно уточнить? И там нет инструкции if/else ... только два условных оператора. –

+0

название этого вопроса не соответствует его содержанию, его сравнивают и нет, если/иначе – Zorian

ответ

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

Пожалуйста, отформатируйте свой код и, желательно, объясните свое решение. – Magnilex

1

сравнивает два Item объектов.

Если первый код Item имеет значение null, он возвращает -1, что означает, что первые Item будут заказаны до второго Item.

В противном случае, если второй код Item имеет значение null, он возвращает 1, что означает, что второй Item будет заказан до первого Item.

В противном случае будут сопоставлены коды двух позиций (сравнение двух чисел с плавающей запятой), и результат этого сравнения определит порядок.

+0

Спасибо за помощь ur @Eran – DEV

0

Это прекрасный двойной тернар, который вас беспокоит?

Это означает то же самое:

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

AS вы можете увидеть, используя мульти ternaires не очень читаемый так избежать этого pratice;)

+0

спасибо большое damus4 – DEV

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); 
    } 
} 
Смежные вопросы