1. 程式人生 > 其它 >Java基礎——Map集合

Java基礎——Map集合

一、概述:

  1. Interface Map<K,V> k:鍵的型別;V:值的型別

  2. 將鍵對映到值的物件;不能包含重複的鍵;每個鍵可以對映到最多一個值

二、建立Map集合的物件方式

1.使用多型的方式

2.具體實現類HashMap

public static void main(String[] args) {
      //建立Map集合物件
      Map<String,String> m=new HashMap<String,String>();
      //新增元素使用put方法,預設自然排序
      m.put("02","李四");
      m.put("04","趙六");
      m.put("01","張三");
      m.put("03","王五");
      System.out.println(m);
  }
}

三、Map集合的常用方法

方法名 說明
V put(K key,V value) 新增元素,新增重複鍵值元素會覆蓋
V remove(Object key) 根據鍵刪除鍵值對元素
void clear() 清除所有的鍵值對元素
Boolean containsKey(Object key) 判斷集合是否包含指定的鍵,包含返回true
Boolean containsValue(Object value) 判斷集合是否包含指定的值,包含返回true
Boolean isEmpty() 判斷集合是否為空
int size() 獲取集合的長度,也就是鍵值對的個數
public class MapDemo01 {
  public static void main(String[] args) {
      //建立Map集合物件
      Map<String,String> m=new HashMap<String,String>();
      //新增元素,put方法
      m.put("1","張三");
      m.put("2","李四");
      m.put("3","王五");
      m.put("4","趙六");
      // System.out.println(m);
      //根據鍵刪除鍵值對元素
      System.out.println(m.remove("3"));//切記鍵是什麼型別就寫什麼型別,不然會返回null
      System.out.println(m);
      //清除所有鍵值對元素
      m.clear();
      //Boolean isEmpty()判斷集合是否為空
      System.out.println(m.isEmpty());
      // System.out.println(m);
      //Boolean containsKey(Object key);判斷集合中是否包含指定的鍵
      System.out.println(m.containsKey("5"));//切記鍵是什麼型別就寫什麼型別,不然會返回null
      //Boolean containsValue(Object value)判斷集合是否包含指定的值,包含返回true
      System.out.println(m.containsValue("張三"));
      //int size()獲取集合的長度,也就是鍵值對的個數
      System.out.println(m.size());
  }
}

四、Map的獲取方法

方法名 說明
V get(Object key) 根據鍵獲取值
Set<K>keySet() 獲取所有鍵的集合
Collection<V>values() 獲取所有值的集合
Set<Map.Entry<K,V>>entrySet() 獲取所有鍵值對物件的集合
public class MapDemo02 {
  public static void main(String[] args) {
      //建立Map物件
      Map<String,String> m=new HashMap<String,String>();
      //新增元素
      m.put("1","張三");
      m.put("3","李四");
      m.put("4","王五");
      m.put("2","趙六");
//       System.out.println(m);
      //V get(Object key)根據鍵獲取值
      System.out.println(m.get("3"));//要注意鍵的型別,型別不對會報null
      //Set<K>keySet()獲取所有鍵的集合,因為返回的是個集合,所以用增強for遍歷
      Set<String> k=m.keySet();
      for (String key:k){
          System.out.println(key);
      }
      //Collection<V>values()獲取所有值的集合,注意,他會按照鍵的排序對值進行排序
      Collection<String> c=m.values();
      for (String v:c){
          System.out.println(v);
      }

  }
}

五、Map集合的遍歷方式

方式一:

1.先獲取Map集合中的所有鍵的集合,使用方法setKey()

2.遍歷所有鍵的集合獲取每一個鍵

3.通過每一個鍵獲取相對應的值 getValues方法

public static void main(String[] args) {
      //方式一
      //建立Map集合物件
      Map<String,String> m=new HashMap<String,String>();
      //新增鍵值對
      m.put("1","張三");
      m.put("3","李四");
      m.put("4","王五");
      m.put("2","趙六");
      //獲取所有鍵的集合
      Set<String>s=m.keySet();
      //遍歷
      for (String key:s){
          //再通過鍵獲取相對應的值
          String value=m.get(key);
          System.out.println(key+","+value);
      }
  }
}

方式二、

1.獲取所有鍵值對的集合,使用Set<Map.Entry<K,V>>entrySet()方法

2.遍歷這個集合獲得每一個鍵值對 物件也就是Map.Entry物件

3.再根據鍵值對物件獲取值和鍵

getKey()獲取鍵

getValue()獲取值

public static void main(String[] args) {
//       //方式一
//       //建立Map集合物件
//       Map<String,String> m=new HashMap<String,String>();
//       //新增鍵值對
//       m.put("1","張三");
//       m.put("3","李四");
//       m.put("4","王五");
//       m.put("2","趙六");
//       //獲取所有鍵的集合
//       Set<String>s=m.keySet();
//       //遍歷
//       for (String key:s){
//           //再通過鍵獲取相對應的值
//           String value=m.get(key);
//           System.out.println(key+","+value);
//       }
      //方式二
      //建立Map集合物件
      Map<String,String> m=new HashMap<String,String>();
      //新增鍵值對
      m.put("1","張三");
      m.put("3","李四");
      m.put("4","王五");
      m.put("2","趙六");
      //獲取所有鍵值對的集合Set<Map.Entry<K,V>>entrySet()
      Set<Map.Entry<String,String>> s= m.entrySet();
      //遍歷該集合
      for (Map.Entry<String,String> ss:s){
          //通過鍵值對物件獲取鍵值
          String key=ss.getKey();
          //通過鍵值對物件獲取值
          String value=ss.getValue();
          System.out.println(key+","+value);

      }
  }
}