1. 程式人生 > >MAP集合練習

MAP集合練習

package collection;

import java.util.HashMap;
import org.junit.Test;

/**
 * 
 * @function: MAP集合練習
 *1、指定型別。2、未指定型別
 *
 * @author:陸立均
 * @date:2018年12月16日
 *
 */
public class Map {
    
    /**
     * 未指定鍵、值型別
     * 
     * 鍵值為任意型別 ,都為Object型別
     */
    @Test
    public void hmap(){
        HashMap map=new HashMap();
        map.put(1, 100);
        map.put("name","王五");
        //遍歷獲取鍵
        for(Object o : map.keySet()){
            //根據鍵取值
            Object obj=map.get(o);
            System.out.println("o:"+obj);
        }
        
    }

    /**
     * 指定鍵值型別
     * 
     * 鍵為Integer型別,值為字串型別
     * 
     */
    @Test
    public void opperMap_01() {
        // 構造一個具有預設初始容量 (16) 和預設載入因子 (0.75) 的空 HashMap。只有呼叫put的方法的時候才真正的建立陣列
        HashMap<Integer, String> hMap = new HashMap<Integer, String>();  //不建立陣列的,所以結論是 0
        //Map<String, String> m0 = new HashMap<>(0);
        
        hMap.put(1, "100");
        hMap.put(2, "002");
        hMap.put(3, "006");
        hMap.put(3, "006"); //重複時,被覆蓋
        // 遍歷集合方式一
        for (Integer id : hMap.keySet()) {
            String value = hMap.get(id);
            System.out.print("id:"+id);
             System.out.println(",值:"+value);
        }

        // // 遍歷集合方式二:通過Map.values()遍歷所有的value,但不能遍歷key")
        for (String v : hMap.values()) {
            //System.out.println("value= " + v);
        }

        // 第三種:推薦,尤其是容量大時
        System.out.println("第三種:通過Map.entrySet遍歷key和value");
        for (HashMap.Entry<Integer, String> entry : hMap.entrySet()) {
            // Map.entry<Integer,String> 對映項(鍵-值對) 有幾個方法:用上面的名字entry
            // entry.getKey() ;entry.getValue(); entry.setValue();
            // map.entrySet() 返回此對映中包含的對映關係的 Set檢視。
            
            //    System.out.println("key= " + entry.getKey() + " and value= "            + entry.getValue());
        }
    }
    
    /**
     * 指定鍵、值型別。
     * 
     * 鍵是字串型別,值為Student物件
     */
    @Test
    public void hashMap(){
        HashMap<String,Student> hs=new HashMap<String,Student>();
        hs.put("01", new Student("1","張三"));
        hs.put("02",new Student("2","lisi"));
        //
        for(String id:hs.keySet()){
            Student student=hs.get(id);
            System.out.print("學生:"+student.id);
            System.out.println("名字:"+student.name);
        }
    }
}