HashTable及HashMap的區別及使用

HashTable與Hashmap的區別:

1、hashtable因爲是同步,所以是線程安全的;hashmap因爲是異步的,所以並不是線程安全的。

2、hashmap由於是異步的,所以操作起來比hashtable更快

3、hashmap與hashtable中的關鍵字並不是按常規的比較進行排序的,具體的排序規則未知;

HashTable

public class test_length {
    public static void main(String[] args) {
        Hashtable<Integer,Integer> a=new Hashtable<>();
        a.put(7,0);
        a.put(2,3);
        a.put(5,1);
        for(int key:a.keySet())
        System.out.println(key+" "+a.get(key));

        //map中entry的用法
        Set set=a.entrySet();
        Iterator i=set.iterator();
        while(i.hasNext()){
            Map.Entry c=(Map.Entry)i.next();
            System.out.println(c.getKey()+" "+c.getValue());
        }
    }
}

 

 

如下圖所示,haspmap中查找是否含有key用的是containsKey

a.remove(key),根據關鍵字進行刪除。

 public int lengthOfLongestSubstring(String s) {
         HashMap<String, Integer>a=new HashMap<>();
        int max=0,count=0,lo=0;
        for(int i=0;i<s.length();i++){
            String cur=String.valueOf(s.charAt(i));
            if(a.containsKey(cur)){
                // while(a.get(cur)!=null)
                for(;lo<a.get(cur);lo++){
                    a.remove(String.valueOf(s.charAt(lo)));
                    // System.out.println("     "+a.size());
                }
                lo++;
            }
            a.put(cur,i);
            // System.out.println(a.size());
            if(max<a.size())max=a.size();
        }
        return max;
    }

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

優雅的將座標值(x,y)放入hashmap

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

由於hashmap的key不能是int[],因此我們無法使用hashmap.put(int [],1)這樣來保證key在hashmap中

因此得嘗試另一種思路,使用hashset!!!

hashset a=hashmap.getordefault(int[0],new hashset<>());

a.add(int [1]);

hashmap.put(int [0],a);

這樣就將座標放入hashmap中了

如果要查詢(x,y)是否存在

hashmap.get(x).contains(y)

 

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