Java Map接口 (推薦學(xué)習(xí):java課程)
java.util.Map 接口 查找表
Map 體現(xiàn)的結(jié)構(gòu)是一個(gè)多行兩列的表格,左列稱為key 右列稱為value. Map 總是根據(jù)key來(lái)獲取對(duì)應(yīng)的value.因此保存數(shù)據(jù)時(shí)是成對(duì)保存的,并且應(yīng)當(dāng)將查詢的數(shù)據(jù)作為value查詢條件作為key進(jìn)行保存. Map要求key 不允許重復(fù)(equals 比較判定)
常用的實(shí)現(xiàn)類
java.util.HashMap,散列表,哈希表
查詢速度最快的數(shù)據(jù)結(jié)構(gòu)
基本用法
public class MapDemo{ public static void main(String[] args){ Map<String,Integer>map = new HashMap<>(); /* * V put(K k,V v) * 將給定的key-value對(duì)存入Map * 由于Map要求key不允許重復(fù),所以若 * 使用重復(fù)的key存儲(chǔ)則是替換value操作 * 那么返回值就是該key原來(lái)對(duì)應(yīng)的value * 若給定的key不存在則返回值為null. */ map.put("攻擊",60); Integer value=map.put("攻速",8); System.out.println(value); // null value=map.put("攻速",6); System.out.println(value); // 8 /* * V get(Object key) * 根據(jù)給定的key獲取對(duì)應(yīng)的value * 若給定的key不存在則返回值為null */ value =map.get("攻擊"); System.out.println(value);//60 /* * V remove(Object key) * 刪除當(dāng)前Map中給定的key所對(duì)應(yīng)的鍵值對(duì) * 返回值為該key對(duì)應(yīng)的value */ value = map.remove("攻擊"); System.out.println(map); System.out.println(value); /* * int size() * 返回Map中的元素個(gè)數(shù) */ int size = map.size(); System.out.println(size); /* * 判斷當(dāng)前Map是否包含給定的key或value */ boolean ck = map.containsKey("攻速"); System.out.println("包含key:"+ck); boolean cv = map.containsValue(96); System.out.println("包含value:"+cv); } }
Map的遍歷
import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Set; /** * Map的遍歷 Map提供了三種遍歷方式: 1:遍歷所有的key 2:遍歷每一組鍵值對(duì) 3:遍歷所有的value(相對(duì)不常用) * */ public class MapDemo2 { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("語(yǔ)文", 99); map.put("數(shù)學(xué)", 98); map.put("英語(yǔ)", 97); map.put("物理", 96); map.put("化學(xué)", 99); System.out.println(map); /* * 遍歷所有的key * Set keySet() * 將當(dāng)前Map中所有的key以一個(gè)Set集合 * 形式返回.遍歷該集合等同于遍歷了所有 * 的key */ Set<String> keySet = map.keySet(); for(String key : keySet) { System.out.println("key:"+key); } /* * 遍歷每一組鍵值對(duì) * Set entrySet() * 將當(dāng)前Map中每一組鍵值對(duì)以一個(gè)Entry實(shí)例 * 存入Set集合并返回. * * java.util.Map.Entry * Entry的每一個(gè)實(shí)例用于表示Map中的一組 * 鍵值對(duì) */ Set<Entry<String,Integer>> entrySet = map.entrySet(); for(Entry<String,Integer> e:entrySet) { String key = e.getKey(); Integer value = e.getValue(); System.out.println(key+":"+value); } } }