2015-03-19 74 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提前任何幫助需要下面的if else語句

+1

你到底需要澄清什麼?而且那裏沒有if/else語句......只有兩個條件運算符。 – 2015-03-19 12:27:51

+0

這個問題的標題不符合它的內容,它的一個比較和沒有if/else – Zorian 2015-03-19 12:27:54

回答

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

請格式化您的代碼,並最好解釋您的解決方案。 – Magnilex 2015-03-19 19:17:23

1

兩份Item對象進行比較的代碼片段。

如果第一個Item的代碼爲null,則返回-1,這意味着第一個Item將在第二個Item之前排序。

否則,如果第二Item的代碼爲空,則返回1,這意味着第二Item將第一Item之前進行排序。

否則,將比較兩個項目代碼(比較兩個浮點數),並且比較的結果將確定順序。

+0

感謝您的幫助@Eran – DEV 2015-03-19 12:36:55

0

這是美麗的雙ternair困擾你嗎?

這意味着相同:

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

AS可以看到使用多ternaires不是很可讀所以避免這種初步實踐)

+0

非常感謝damus4 – DEV 2015-03-19 12:34:46

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); 
    } 
}