天天看點

今天聊下Java中的HashMap---Java中用的就很多的集合架構

先說下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值

Google

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中的所有元素都删除

結果:

{}