1. 程式人生 > >Java基礎 - Map接口的實現類 : HashedMap / LinkedHashMap /TreeMap 的構造/修改/遍歷/ 集合視圖方法/雙向叠代輸出

Java基礎 - Map接口的實現類 : HashedMap / LinkedHashMap /TreeMap 的構造/修改/遍歷/ 集合視圖方法/雙向叠代輸出

順序 所有 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 的構造/修改/遍歷/ 集合視圖方法/雙向叠代輸出