2012-01-05 24 views
0

size()方法ArrayList類只是一個getter,還是它執行任何類型的計算?ArrayList中size()方法的用途

如果它是一個吸氣劑,那麼可以安全地假設,如果我稱它爲大量次,它會在某個點上內聯。

回答

1

size()方法不是一個標準制定者/吸氣劑,它是被定義以得到list的大小List的方法(多個元件)

ArrayList通過以下方式

public int size() { 
    230   return size; 
    231  } 
實現它

它維護一個int變量,調用size,當我們添加它時,增加,減少刪除。

1

ArrayList.size()是否會內聯取決於許多因素,但是,至少在理論上,如果您引用的次數足夠多並且所有其他內聯標準都滿足,那麼它將被內聯。

大多數情況下,ArrayList只是一個類,與您可能編寫的類不同。所以它將受制於相同的內聯規則/潛力。

[只是檢查的ArrayList源,這裏是我的發現:

public int size() { 
    return size; 
} 

大約是香草(和高度直列能),你可以得到。所以我想說,size()幾乎會內聯在幾乎所有的情況下,你不會嚴重模糊類的類型。]

0

由於getter只是返回一個字段,沒有負面的性能影響。 JIT足夠聰明,可以將呼叫內聯,從而避免函數調用開銷。

查看類似的問題在這裏:Is ArrayList.size() method cached?

1

如果你想真正看到自己如何大小()方法來實現,你可以下載源代碼的Java庫,因爲它是在GNU GPL;第196行的OpenJDK 6源代碼。

OpenJDK 7 Sources

內聯的話題,您不妨仔細閱讀以下職位:

Inlining in Java

相關問題