容易忽略的ArrayList.remove

ArrayList.remove 方法是常用的一個移除集合裏某個對象的方法。此方法使用起來非常方便。但是在使用的時候一定要注意當被移除的對象是int 類型的時候。確保正確使用這個方法。

本人在使用這個方法的時候,一不留神導致了一個線上bug,還好沒出現太大問題,可以後來想了想,還是挺嚴重的。

本人使用這個方法的目的是要移除一個id list 中符合條件的id。結果在使用的時候沒有仔細注意ArrayList.remove 的兩個重載方法

boolean remove(Object o);
E remove(int index);

這兩個重載方法的入參一個是基本類型數據int,一個是對象。我的目的是移除一個對象,但是此時itemInfo.itemId 傳入的是int類型。這就導致了結果與目的不一致。幸運的是,入參的int 值比較大超出了list 的size,拋出IndexOutOfBoundsException異常得以發現,不然後果可能嚴重的多。

總結:

在使用ArrayList.remove 方法的時候一定要注意自己使用的是,remove(int index) 還是remove(Object o).