java-Map介面(查詢表)
阿新 • • 發佈:2019-02-08
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}
}
}