集合------Map

集合------Map

 

1.Map介紹

 

Map接口下的集合於collection接口下的集合存儲數據的方式是不同的,Map中是以鍵值對的方式存在的。示例以下:數組

  Map以k-v的形式存在數據結構

      

  

  • map中不能有重複的鍵,可是值能夠重複。每個鍵只能對應與本身相對應的一個值spa

2.Map的經常使用子類

  • HashMap:存儲市局結構使用的是哈希表結構,元素存取順序不能保證一致,因爲hashMap須要保證鍵的惟一,因此通常重寫鍵的hashCode()方法,equals()方法。code

  • LinkedHashMap:HashMap下的子類,存儲數據結構是哈希表+鏈表結構,經過鏈表結構能夠保證存取數據的有序性,經過hash表的方式能夠確保鍵的惟一性,不須要重寫hashCode方法和equals方法。對象

3.Map中經常使用方法

  Map中經常使用的方法有如下幾個:blog

  • public V put(K key,V value):將指定的鍵與值提添加到map接口

  • public V remove(Object key):將指定的鍵以及對應的value從map中刪除,返回被刪除的元素rem

  • public V get(Object key) :根據指定的鍵,在Map集合中獲取對應的值。字符串

  • public Set<K> keySet() : 獲取Map集合中全部的鍵,存儲到Set集合。get

  • public Set<Map.Entry<K,V>> entrySet() : 獲取到Map集合中全部的鍵值對對象的集合(Set集合)。

代碼示例:

 1  public static void main(String[] args) {
 2         HashMap<Integer,String> map = new HashMap<>();
 3         //在map中加入元素
 4         map.put(1,"熊大");
 5         map.put(2,"熊二");
 6         map.put(3,"光頭強");
 7         System.out.println(map);
 8  9         //remove
10         String remove = map.remove(2);
11         System.out.println(remove);//熊二
12 13         //get
14         String s = map.get(3);
15         System.out.println(s);//光頭強
16     }

注意:使用put方法時,若指定的鍵(key)在集合中沒有,則沒有這個鍵對應的值,返回null,並把指定的鍵值添加到集合中;若指定的鍵(key)在集合中存在,則返回值爲集合中鍵對應的值(該值爲替換前的值),並把指定鍵所對應的值,替換成指定的新值。

4.Map的遍歷

方式1:經過map的鍵來查找值

 1 public static void main(String[] args) {
 2         HashMap<Integer,String> map = new HashMap<>();
 3         //在map中加入元素
 4         map.put(1,"熊大");
 5         map.put(2,"熊二");
 6         map.put(3,"光頭強");
 7  8         //獲取key的集合
 9         Set<Integer> set = map.keySet();
10         //遍歷key集合
11         for (Integer key : set) {//key就是map集合的key
12             //打印key對應的value
13             System.out.println(key+":"+map.get(key));
14         }
15     }

 

方法二:經過Entry來獲取對象

 1 public static void main(String[] args) {
 2         HashMap<Integer,String> map = new HashMap<>();
 3     
 4         //在map中加入元素
 5         map.put(1,"熊大");
 6         map.put(2,"熊二");
 7         map.put(3,"光頭強");
 8     
 9         //獲取entry對象
10         Set<Map.Entry<Integer, String>> entries = map.entrySet();
11         //遍歷entry對象
12         for (Map.Entry<Integer, String> entry : entries) {
13             Integer key = entry.getKey();
14             String value = entry.getValue();
15 16             System.out.println(key+":"+value);
17         }
18     }

 

5.Map集合小練習

獲取一個字符串中每一個字母出現的次數

 1 public static void main(String[] args) {
 2         String s = "you-are-my-shine,baby";
 3         //用字符數組中的每一個字符做爲K,出現次數做爲V
 4         HashMap<Character, Integer> map = new HashMap<>();
 5        
 6         //遍歷字符串
 7         for (int i = 0; i <s.length() ; i++) {
 8             //轉換爲字符
 9             char k = s.charAt(i);
10             //判斷是否包含字符
11             //不包含說明是第一次put
12             if (!map.containsKey(k)){
13                 map.put(k,1);
14             }else {
15                 //包含,先獲取已經有的次數,而後++,put進去
16                 Integer v = map.get(k);
17                 map.put(k,++v);
18             }
19         }
20         System.out.println(map);
21     }
相關文章
相關標籤/搜索