你寫了個Bug之集合判斷包含元素

有時你會發現,Bug測試沒測出來,結果生產跑出來了,只能一句mmp,無情啊。

通常,我們會使用HashSet作爲集合判斷是否包含某一元素,show code

 

public class Test{


public static void main(String []args){
        
       HashSet<String> setString = new HashSet<String>(Arrays.asList("1"));

       if(setString.contains("1")){
            
            System.out.println(1);
       }

       if(setString.contains(1)){
           System.out.println(2); 
       }
           

}

}

輸出結果:  1

 

我們來看下 HashSet的源碼:

public boolean contains(Object o) {
    return map.containsKey(o);
}

這個contains方法,實質上調用了HashMap的contains方法。調用這個方法需要注意的是判斷元素類型必須和HashSet的參數類型相同,當類型不同時,雖然編譯可以通過(因爲參數是object類型的),但實際運行時,就不是我們需要的結果,基礎很重要,半道出家,難搞。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章