1. 程式人生 > >java-Map介面(查詢表)

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