Java語言HashMap用法及實例學習

                        Java語言HashMap用法及實例學習

 

 

一、HashMap是最常用的Map集合,它的鍵值對在存儲時要根據鍵的哈希碼來確定值放在哪裏。在數組中我們是通過數組下標來對其內容索引的,而在Map中我們通過對象來對對象進行索引,用來索引的對象叫做key,其對應的對象叫做value。在下文中會有例子具體說明。

二、HashMap常用函數:
          HashMap hash = new HashMap();
          hash.keySet() 方法是用來獲取此映射中包含的鍵的Set視圖
          hash.hashCode() :返回int類型
          hash.put(Object key, Object value)
          hash.get(Object key)返回key值對應的value
          hash.remove(key) 返回對應的value
          hash.remove(key, value) 返回boolean是否remove成功
          hash.size() :返回int類型的存儲的節點的個數
          hash.containsKey(Object key) :boolean
          hash.containsValue(value) :boolean
          hash.values() :返回value集合
          hash.clear();
          hash.replace(key, oldValue, newValue) 替換
          hash.replace(key, value) 將key對應的oldvalue換爲傳入的參數value,返回oldvalue
          hash.entrySet()
          hash.isEmpty()判斷是否爲空
          hash.equals(o):判斷兩個對象是否相等

 

三、實例測試

     3.1 HashMapTest.java代碼

package com.example.hashmaptest;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map.Entry;

interface GpsStatus_Listener
{
    int ID=520111;
    public void run ();
}

class GnssStatusListenerTransport{

    private static final String TAG = "LocationManager";
    private int i= 10;
    private String str;
    private int get_int_value(){

        return i;
    }
    public int set_int_value(int v){
        i=v;
        return i;
    }
    void display ()
    {
        System.out.println("GnssStatusListenerTransport i="+i);
    }

}
public class HashMapTest {

    public static void main(String[] args) {
         GpsStatus_Listener gpsListener_1 = new GpsStatus_Listener() {
            @Override
            public void run ()
            {
                System.out.println("GpsStatus_Listener_1");
            }

        };
         GpsStatus_Listener gpsListener_2 = new GpsStatus_Listener() {

            public void run ()
            {
                System.out.println("GpsStatus_Listener_2");
            }

        };
         GpsStatus_Listener gpsListener_3 = new GpsStatus_Listener() {

            public void run ()
            {
                System.out.println("GpsStatus_Listener_3");
            }

        };
        GpsStatus_Listener gpsListener_4 = new GpsStatus_Listener() {

            public  void run ()
            {
                System.out.println("GpsStatus_Listener_4");
            }

        };
         GpsStatus_Listener gpsListener_5 = new GpsStatus_Listener() {

            public void run ()
            {
                System.out.println("GpsStatus_Listener_5");
            }

        };
        GnssStatusListenerTransport   ListenerTransport_1=new GnssStatusListenerTransport();
        GnssStatusListenerTransport   ListenerTransport_2=new GnssStatusListenerTransport();
        GnssStatusListenerTransport   ListenerTransport_3=new GnssStatusListenerTransport();
        GnssStatusListenerTransport   ListenerTransport_4=new GnssStatusListenerTransport();
        GnssStatusListenerTransport   ListenerTransport_5=new GnssStatusListenerTransport();
        HashMap<GpsStatus_Listener, GnssStatusListenerTransport> mGpsStatusListeners = new HashMap<>();

        System.out.println("*********************************************************** 1");
        System.out.println("isEmpty:"+mGpsStatusListeners.isEmpty());
        System.out.println("size:"+ mGpsStatusListeners.size());

        mGpsStatusListeners.put(gpsListener_1,ListenerTransport_1);
        mGpsStatusListeners.put(gpsListener_2,ListenerTransport_2);
        mGpsStatusListeners.put(gpsListener_3,ListenerTransport_3);
        mGpsStatusListeners.put(gpsListener_4,ListenerTransport_4);
        mGpsStatusListeners.put(gpsListener_5,ListenerTransport_5);

        ListenerTransport_5.set_int_value(12306);
        System.out.println("*********************************************************** 2");
        for (Entry<GpsStatus_Listener, GnssStatusListenerTransport> entry : mGpsStatusListeners.entrySet()) {
            GpsStatus_Listener  gpsListener_temp=entry.getKey();
            GnssStatusListenerTransport   ListenerTransport_temp=entry.getValue();
            gpsListener_temp.run();
            ListenerTransport_temp.display();
        }
        System.out.println("*********************************************************** 3");
        System.out.println("isEmpty:"+mGpsStatusListeners.isEmpty());
        System.out.println("size:"+ mGpsStatusListeners.size());


        System.out.println("*********************************************************** 4");
        GnssStatusListenerTransport m_transport=mGpsStatusListeners.get(gpsListener_4);
        m_transport.display();

        m_transport=mGpsStatusListeners.get(gpsListener_5);
        m_transport.display();
        ListenerTransport_5.set_int_value(10086);
        m_transport.display();


        HashMap<String, String> map = new HashMap<>();

        map.put("KEYCODE_CALL", "5");//存放鍵值對
        System.out.println("*********************************************************** 5");
        System.out.println(map.containsKey("KEYCODE_CALL"));//鍵中是否包含這個數據
        System.out.println(map.containsKey("KEYCODE_ENDCALL"));
        System.out.println("*********************************************************** 6");

        System.out.println(map.get("KEYCODE_CALL"));//通過鍵拿值
        System.out.println(map.get("KEYCODE_ENDCALL"));
        System.out.println("*********************************************************** 7");

        System.out.println(map.isEmpty());//判空
        System.out.println(map.size());
        System.out.println("*********************************************************** 8");
        System.out.println(map.remove("KEYCODE_CALL"));//從鍵值中刪除
        System.out.println(map.containsKey("KEYCODE_CALL"));
        System.out.println(map.get("KEYCODE_CALL"));//獲取值
        System.out.println(map.isEmpty());
        System.out.println(map.size());
        System.out.println("*********************************************************** 9");

        map.put("KEYCODE_HOME", "3");
        System.out.println(map.get("KEYCODE_HOME"));
        map.put("KEYCODE_HOME", "9");
        System.out.println(map.get("KEYCODE_HOME"));
        System.out.println("*********************************************************** 10");
        map.put("KEYCODE_MENU", "31");
        map.put("KEYCODE_BACK", "32");
        map.put("KEYCODE_SEARCH", "33");

        for (String key : map.keySet()) {
            System.out.println(key);
        }
        System.out.println("*********************************************************** 11");

        for (String values : map.values()) {
            System.out.println(values);
        }
        System.out.println("*********************************************************** 12");

        map.clear();
        map.put("A", "1");
        map.put("B", "2");
        map.put("C", "3");
        map.put("D", "1");
        map.put("E", "2");
        map.put("F", "3");
        map.put("G", "1");
        map.put("H", "2");
        map.put("I", "3");
        for (Entry<String, String> entry : map.entrySet()) {
            String key = entry.getKey();
            String value = entry.getValue();
            System.out.println(key + "," + value);
        }
        System.out.println("*********************************************************** 13");
 // you can not remove item in map when you use the iterator of map
        // for(Entry<String,String> entry : map.entrySet()){
        // if(!entry.getValue().equals("1")){
        // map.remove(entry.getKey());
        // }
        // }

        // if you want to remove items, collect them first, then remove them by
        // this way.
        List<String> removeKeys = new ArrayList<String>();
        for (Entry<String, String> entry : map.entrySet()) {
            if (!entry.getValue().equals("1")) {
                removeKeys.add(entry.getKey());
            }
        }
        for (String removeKey : removeKeys) {
            map.remove(removeKey);
        }
        for (Entry<String, String> entry : map.entrySet()) {
            String key = entry.getKey();
            String value = entry.getValue();
            System.out.println(key + "," + value);
        }
        System.out.println("*********************************************************** 14");

    }

}

  3.2運行結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章