java-Map接口(查詢表)

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

/**
 * Map接口
 * Map接口定義的集合又稱查詢表,用於存儲"Key-Value"映射對。Key是Value的索引
 * Map要求Key不允許重複,是否重複取決於Key元素
 * equals方法比較的結果
 * 
 * 常用實現類;java.util.HashMap
 * HashMap:散列表,以散列算法實現的Map
 * 
 */
public class MapDemo {
    public static void main(String[] args) {
        Map<String,Integer> map=new HashMap<String,Integer>();
        /**
         * 向Map中存放元素的put方法
         * V put(K key,V value)
         * 將Key-Value對存入Map,如果在集合中已經包含該Key,
         * 則操作將替換該Key所對應的Value,返回值爲該Key原來所對應的Value(如果沒有則返回null)
         */
        map.put("語文", 89);
        map.put("數學", 56);
        map.put("化學", 54);
        map.put("體育", 89);
        map.put("語文", 98);
        System.out.println(map);//{體育=89, 數學=56, 化學=54, 語文=98}
        /**
         * 儘量不要使用基本類型去接收返回值,以爲返回值爲null時,
         * 觸發自動拆箱時會引起空指針異常
         */
        Integer num=map.put("美術", 99);
        System.out.println(num);//null
        System.out.println(map);//{體育=89, 數學=56, 化學=54, 語文=98, 美術=99}
        Integer num1=map.put("美術", 99);
        System.out.println(num1);//99
        /**
         * 從Map中獲取元素
         * -V get(Object key)
         * 返回參數key所對應的Value對象,如果不存在則返回null
         */
        Integer num2=map.get("體育");
        System.out.println(num2);//89
        Integer num3=map.get("大海");
        System.out.println(num3);//null
        /**
         * V remove(Object key)
         * 將給定的Key對應的鍵值對從map中刪除,返回值爲該key對應的value值
         */
        Integer num4=map.remove("美術");
        System.out.println(num4);//99
        System.out.println(map);//{體育=89, 數學=56, 化學=54, 語文=98}
        /**
         * containsKey()方法
         * 判斷某個Key是否在Map中存在(參考equals比較結果)
         * boolean containKey(Object key)
         * 若Map中包含給定的Key則返回true,否則返回false
         * boolean containValue(V v)
         * 若Map中包含給定的Value則返回true,否則返回false
         */
        boolean containsKey=map.containsKey("化學");
        System.out.println(containsKey);//true
        System.out.println(map.containsKey("大大"));//false
        System.out.println(map.containsValue(10));//false
        /**
         * 遍歷Map
         * 遍歷key:Set KeySet()該方法會將當前Map中所有的Key存入一個Set集合後返回
         * 遍歷Value(不常用)
         * 遍歷Key-Value
         */
        Map<String,Double> maps=new HashMap<String,Double>();
        maps.put("a", 1.2);
        maps.put("b", 15.3);
        maps.put("c", 1.6);
        maps.put("d", 1.2);
        System.out.println(maps);//{a=1.2, b=15.3, c=1.6, d=1.2}
        Set<String> keyset=maps.keySet();
        for(String key:keyset) {
            System.out.println("Key:"+key);
        }

        /**
         * 遍歷每一組鍵值對
         * set entrySet()
         * Entry是Map的內部類,其每一個實例用於表示Map中一組鍵值對
         * 常用方法:getKey,getValue,這兩個方法分別用於獲取該組鍵值對中的Key與value
         * 
         * entrySet方法會將當前maps中每一組鍵值對以一個Entry實例的形式存入Set集合後返回
         */
        Set<Entry<String,Double>> entryset=maps.entrySet();
        for(Entry<String,Double> e:entryset) {
            String key=e.getKey();
            Double value=e.getValue();
            System.out.println(key+":"+value);
        }
        /**
         * 遍歷所有的value
         * Collection values()
         * 將當前Map中所有的value存入一個集合後返回
         */
        Collection<Double> values=maps.values();
        for(Double d:values) {
            System.out.println(d);
        }
        /**
         * LinkdedHashMap類
         * 此實現與 HashMap 的不同之處在於,後者維護着一個運行於所有條目的雙重鏈接列表。此鏈接列表定義了迭代順序,
         * 該迭代順序通常就是將鍵插入到映射中的順序(插入順序)。
         */
        Map<String,Integer> link=new LinkedHashMap<String,Integer>();
        link.put("da", 12);
        link.put("ha", 13);
        link.put("hei", 15);
        System.out.println(link);//{da=12, ha=13, hei=15}
    }
}
發佈了155 篇原創文章 · 獲贊 37 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章