HashMap和IdentifyHashMap

HashMap和IdentifyHashMap是Java中兩個常見的Map類,對這兩個類感興趣的可以去看他們的源碼。在這裏只說他們的區別。


HashMap類判斷鍵k1和k2相等的條件爲 (k1==null?k2==null:k1.equals(k2))==true

IdentifyHashMap判斷k1和k2相等的條件是(k1==k2)


來看下面的代碼:

import java.util.HashMap;
import java.util.IdentityHashMap;
import java.util.Map;

/**
 * Created by yizhen on 17-3-28.
 */
public class G {
    public static void main(String[] args) {
        {
            Map<String, Integer> map = new HashMap<>();
            map.put("a", 1);
            map.put("a", 2);
            map.put(new String("a"), 3);
            map.put(new String("a"), 4);
            System.out.println(map);
        }
        {
            Map<Key,Integer> map=new HashMap<>();
            map.put(new Key(),1);
            map.put(new Key(),2);
            System.out.println(map);
        }
        {
            Map<String, Integer> map = new IdentityHashMap<>();
            map.put("a", 1);
            map.put("a", 2);

            map.put(new String("a"), 3);
            map.put(new String("a"), 4);

            System.out.println(map);
        }

    }
}

class Key{}

這段代碼的輸出是:

{a=4}

{Key@48ec77cb=1,Key@1cacd5d4=2}

{a=4,a=3,a=2}

筆者開設了一個知乎live,詳細的介紹的JAVA從入門到精通該如何學,學什麼?

提供給想深入學習和提高JAVA能力的同學,歡迎收聽https://www.zhihu.com/lives/932192204248682496



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