Java基礎 - Map接口的實現類 : HashedMap / LinkedHashMap /TreeMap 的構造/修改/遍歷/ 集合視圖方法/雙向叠代輸出
阿新 • • 發佈:2018-10-15
順序 所有 collect int oid 代碼 修改 getc entryset
Map筆記:
import java.util.*; /**一:Collection接口的 * Map接口: HashMap(主要實現類) : HashedMap / LinkedHashMap /TreeMap * Map接口: <鍵,值>對, 重復的鍵會進行值得覆蓋 ,輸出順序和放入順序是不一定可以保持順序的! * 修改查詢操作: 1.put(key, value), 2.remove(key) 3.putAll(其他map), 復制其他映射中的所有鍵值對; * 4.get(key),返回指定的鍵key所映射的值; 5.containsKey(key) /containsValue() 存在指定的鍵/值,則返回true *----------------------------- * 集合視圖方法: * values() * keySet() * entrySet() :[Map.Entry 接口]四個方法:setValue(V value)/getKey()/getValue()/equals(o) *------------------------------ * LinkedHashedMap 是HashMap類的子類,它保持鍵的順序與插入的順序一致! * TreeMap 實現了 SortedMap的接口, SortedMap 接口能保證各項按照關鍵字升序進行排序(默認自然排序) * 構造方法: TreeMap()/TreeMap(Comparator c)/TreeMap(SortedMap m)/TreeMap(Map m) * -------------- * 二: 集合的輸出 * 1.遍歷key集 和value集 , Set keyset=mp3.keySet(); 然後使用加強的For循環即可! * 2.遍歷value集 , Collection vals= mp3.values(); 然後使用叠代器for遍歷: Iterator i= vals.iterator(); * 3.//雙向叠代器輸出 :ListIterator it = all.listIterator() 正向/反向一波 * 4.遍歷鍵值對! */
測試代碼:
public class TestMap { public static void main(String[] args) { Map mp=new HashMap(); mp.put("AAA1",123); mp.put("AAA1",1234); mp.put("AAA2",124); mp.put("AAA3",125); System.out.println("-->"+mp.get("AAA1")); System.out.println(mp); HashMap<String,Integer>ss=new HashMap<String,Integer>(); ss.putAll(mp); System.out.println(ss); Map mp2=new LinkedHashMap(); mp2.put("AAA1",123);mp2.put("AAA1",1234);mp2.put("AAA2",124); mp2.put("AAA3",125); System.out.println(mp2+"----"+mp2.getClass()+"------"); Map mp3=new TreeMap(); mp3.put("AB",123);mp3.put("A",1234); mp3.put("X",124);mp3.put("AX",125); System.out.println(mp3+"----"+mp3.getClass()+"------"); //1.遍歷key集 Set keyset=mp3.keySet(); for (Object o: keyset){ System.out.print(" "+o); } System.out.println(); //2.遍歷value集 Collection vals= mp3.values(); Iterator i= vals.iterator(); while(i.hasNext()) System.out.print(" "+i.next()); System.out.println(); //3.遍歷鍵值對,方式1: Set st1=mp3.keySet(); for(Object o:st1) System.out.print(o+"---->"+mp3.get(o)+" "); System.out.println(); //方式2 Set st2=mp3.entrySet(); for(Object o:st2){ Map.Entry entry=(Map.Entry) o; System.out.print(entry.getKey()+":"+entry.getValue()+" "); } //雙向叠代器輸出 :ListIterator 正向/反向一波 ArrayList<String> all=new ArrayList<String>(); all.add("Hello");all.add("__");all.add("World"); ListIterator it=all.listIterator(); System.out.println("\n先正著 ListIterator:"); while(it.hasNext()) System.out.print(" "+it.next()); System.out.println("\n再逆著返回回去 ListIterator:"); while(it.hasPrevious()) System.out.print(" "+it.previous()); } }
測試結果:
-->1234 {AAA3=125, AAA1=1234, AAA2=124} {AAA3=125, AAA1=1234, AAA2=124} {AAA1=1234, AAA2=124, AAA3=125}----class java.util.LinkedHashMap------ {A=1234, AB=123, AX=125, X=124}----class java.util.TreeMap------ A AB AX X 1234 123 125 124 A---->1234 AB---->123 AX---->125 X---->124 A:1234 AB:123 AX:125 X:124 先正著 ListIterator: Hello __ World 再逆著返回回去 ListIterator: World __ Hello
Java基礎 - Map接口的實現類 : HashedMap / LinkedHashMap /TreeMap 的構造/修改/遍歷/ 集合視圖方法/雙向叠代輸出