主場迎戰據瞭解,如果我想找到一個對象是否是一個ArrayList我既可以使用contains()方法:的Java ArrayList包含了循環
if(arraylist.contains(obj)) { // do things }
或者我可以用一個用於環(條件是我已重載equals()方法):
for(Object o : arraylist) {
if(obj.equals(o)) {
// do things
}
}
正如在其他職位被稱爲,含有()實際上使內部的用於循環和equals()方法。因此,我的問題是:在數組列表較大時期望contains()花費更多時間是否合乎邏輯?
我在問這是因爲在我的代碼中,我使用contains()以避免「for循環」,因此保持運行時間低且恆定,但我注意到代碼運行速度明顯慢於arraylist大小變得更大。
「我注意到代碼運行作爲該ArrayList尺寸變得更大顯著慢。」,這是很有意義的,因爲更大的陣列是,則更多的元素存在通過搜索。 – Vallentin
@Vallentin這也是我的想法。不過,還沒有一個性能增益(或至少不顯著之一)通過使用包含(),而不是一個手動寫的for循環,對不對? – Kotsos
肯定會隨着數組列表大小的增加而變慢。 '的使用包含()'將在單行和會比你的for循環 –