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);
}
}
}