2016-11-09 63 views
-1

所以我得到這個代碼片段小:返回值

我的應用程序創建一個ArrayList<>並添加兩個字符串給它。

import java.util.*; 

public static void main(String[] args) { 
    ArrayList<String> a = new ArrayList<String>(); 

    a.add(0, "zero"); 
    a.add(1, "one"); 

    if (a.indexOf("two") != 1) { 
     a.add(2, "two"); 
    } 
} 

而且有一個if聲明。

因此,我在API文檔上看到indexOf返回指定元素的索引(在本例中爲「2」),但如果此元素不在列表中,它將返回-1!= 1表示此返回值-14不同,因此該語句爲true,並且將執行if塊中的指令(將索引2添加到列表中)。

我說得對嗎?

謝謝無論如何。

+2

你是對的,更好的代碼將首先使用'contains'方法:'if(a.contains(「two」)&& a.indexOf(「two」)!= 1)' –

+0

您是否試圖檢查如果一個元素在特定的位置,或者它是否存在? – shmosel

+0

@RoelStrolenberg更好的代碼會更喜歡O(2n)而不是O(n)?很高興知道。你知道,'contains'是作爲indexOf(o)> = 0來實現的嗎?所以你叫'indexOf'兩次... – Tom

回答

0

是的,你說得對。 但是,出於好奇,你爲什麼不使用:

​​

此外, 你爲什麼不能簡單地把字符串沒有明確規定的指標? 它是一個ArrayList,這些值將總是有序的。

a.add("zero"); 
    a.add("one"); 

    if (a.indexOf("two") !=1) { 
     a.add("two"); 
    } 

如果您明確提供了索引但也有條件地插入,那麼您的代碼很容易出錯。