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運行結果