java 相等的比較,存在的判斷

1.在Java中有8種基本數據類型:

浮點型:float(4 byte), double(8 byte)

整型:byte(1 byte), short(2 byte), int(4 byte) , long(8 byte)

字符型: char(2 byte)

1)對於==,如果作用於基本數據類型的變量,則直接比較其存儲的 “值”是否相等;

     如果作用於引用類型的變量,則比較的是所指向的對象的地址

2)對於equals方法,注意:equals方法不能作用於基本數據類型的變量

  如果沒有對equals方法進行重寫,則比較的是引用類型的變量所指向的對象的地址;

 諸如String、Date,Integer等類對equals方法進行了重寫的話,比較的是所指向的對象的內容

數字使用==判斷是否相等,字符串,對象使用equals函數

2.java.util.HashMap.containsKey()方法用於檢查特定鍵是否被映射到HashMap。它將key元素作爲參數,如果該元素在map中映射,則返回True。

ArrayList中contains()方法調用了indexOf()方法,indexOf()具體實現如下。從源碼可以看出,該方法通過遍歷數據和比較元素的方式來判斷是否存在給定元素。當ArrayList中存放的元素非常多時,這種實現方式來判斷效率將非常低。

HashSet的contains()方法調用HashMap的containsKey()方法,containsKey()方法調用getEntry()方法。在該方法中,首先根據key計算hash值,然後從HashMap中取出該hash值對應的鏈表(鏈表的元素個數將很少),再通過變量該鏈表判斷是否存在給定值。這種實現方式效率將比ArrayList的實現方法效率高非常多。

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