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}
}
}
java-Map接口(查詢表)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.