先說下HashMap的定義
HashMap是一個散清單,存儲的内容是鍵值對(key-value)映射。
HashMap實作了Map接口,根據鍵的HashCode值存儲資料,具有很快的通路速度,最多允許一條記錄的鍵為null,不支援線程同步。最後一點和Hashtable不同,Hashtable是支援線程同步的。
HashMap是無序的,不會記錄插入的順序。HashMap繼承于 AbstractMap,實作了Map/Cloneable/java.io.Serializable
HashMap的key與value類型可以相同也可以不同:可以是字元串(String)類型的 key 和 value,也可以是整型(Integer)的 key 和字元串(String)類型的 value。例如:Map<Integer,String> map = Map.of(1,"A",2,"B",3,"C");
HashMap中的元素實際上是對象,一些常見的基本類型可以使用它的包裝類。基本類型對應的包裝類表如下:
boolean Boolean
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
HashMap類位于 java.util包中,使用前需要引入
import java.util.HashMap 在使用HashMap時,工具會自動引入
接下來,說下HashMap的通路元素: 可以使用 get(key)方法來擷取key對應的value value = map.get(key)
删除元素 可以使用remove(key)方法來删除key對應的鍵值對(key-value) 然後生成的數組是無序的
删除所有鍵值對 使用 clear方法
計算HashMap的大小 可以使用size()方法 map.size() 這裡size也是key和value的個數
疊代HashMap 使用循環 for-each來疊代HashMap中的元素;如果隻想擷取key,可以使用keyset()方法;如果隻想擷取value,可以使用values方法
接下來,我們來看執行個體吧:
1.擷取HashMap的key和value值
//建立HashMap的對象 sites
HashMap<Integer,String> sites = new HashMap<Integer, String>();
//添加鍵值對
sites.put(1,"Google");
sites.put(2,"Baidu");
sites.put(3,"Zhihu");
sites.put(4,"JD");
System.out.println(sites); //key-value鍵值對
//根據key值擷取對應的value值
String key1 = sites.get(3);//當key為3時,找到map中對應的value值
//擷取所有的key值,可以将所有的key值弄成數組
System.out.println("HashMap的key值");
for (int key:sites.keySet()
) {
System.out.println(key);
}
結果:
{1=Google, 2=Baidu, 3=Zhihu, 4=JD}
HashMap的key值
1
2
3
4
HashMap的value值
Baidu
Zhihu
JD
2.在一個循環中擷取key和value值,需要知道key和value的類型
//擷取所有的values值
System.out.println("HashMap的value值");
for (String str:sites.values()
) {
System.out.println(str);
}
System.out.println("-----------------------");
//還可以通過一個循環,擷取HashMap的key和value值 key為int值,value可以通過sites.get(i)獲得
for (int i:sites.keySet()
) {
System.out.println("key的值為: " + i + "values值為: " + sites.get(i));
}
結果:
key的值為: 1values值為: Google
key的值為: 2values值為: Baidu
key的值為: 3values值為: Zhihu
key的值為: 4values值為: JD
3.删除HashMap中的元素
//建立String的key和String的value
HashMap<String,String> map = new HashMap<String,String>();
map.put("one","Google");
map.put("two","Baidu");
map.put("Three","Zhihu");
map.put("Four","JD");
System.out.println(map);
map.remove("one");
System.out.println(map); //無序的,但是删除了 one = Google
結果:
{one=Google, Four=JD, two=Baidu, Three=Zhihu}
{Four=JD, two=Baidu, Three=Zhihu}
4.清除HashMap
map.clear();
System.out.println(map); //HashMap中的所有元素都删除
結果:
{}