欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java集合類之Map集合的特點(diǎn)及使用詳解

 更新時(shí)間:2022年08月29日 11:00:44   作者:小新愛(ài)學(xué)習(xí).  
這篇文章主要為大家詳細(xì)介紹一下Java集合類中Map的特點(diǎn)及使用,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定幫助,感興趣的可以了解一下

1、Map集合概述和使用

1.1 Map集合概述

java.util
接口 Map<K,V>

類型參數(shù):

K - 此映射所維護(hù)的鍵的類型

V - 映射值的類型

public interface Map<K,V>

將鍵映射到值的對(duì)象。一個(gè)映射不能包含重復(fù)的鍵;每個(gè)鍵最多只能映射到一個(gè)值。

此接口取代 Dictionary 類,后者完全是一個(gè)抽象類,而不是一個(gè)接口。

Map 是一種鍵-值對(duì)(key-value)集合,Map 集合中的每一個(gè)元素都包含一個(gè)鍵對(duì)象和一個(gè)值對(duì)象。其中,鍵對(duì)象不允許重復(fù),而值對(duì)象可以重復(fù),并且值對(duì)象還可以是 Map 類型的,就像數(shù)組中的元素還可以是數(shù)組一樣。

Map 接口主要有兩個(gè)實(shí)現(xiàn)類:HashMap 類和 TreeMap 類。其中,HashMap 類按哈希算法來(lái)存取鍵對(duì)象,而 TreeMap 類可以對(duì)鍵對(duì)象進(jìn)行排序。

Map 接口提供三種collection 視圖,允許以鍵集、值集或鍵-值映射關(guān)系集的形式查看某個(gè)映射的內(nèi)容。映射順序 定義為迭代器在映射的 collection 視圖上返回其元素的順序。某些映射實(shí)現(xiàn)可明確保證其順序,如 TreeMap 類;另一些映射實(shí)現(xiàn)則不保證順序,如HashMap 類。

注:將可變對(duì)象用作映射鍵時(shí)必須格外小心。當(dāng)對(duì)象是映射中某個(gè)鍵時(shí),如果以影響 equals 比較的方式更改了對(duì)象的值,則映射的行為將是不確定的。此項(xiàng)禁止的一種特殊情況是不允許某個(gè)映射將自身作為一個(gè)鍵包含。雖然允許某個(gè)映射將自身作為值包含,但請(qǐng)格外小心:在這樣的映射上equals 和 hashCode 方法的定義將不再是明確的。

1.2 Map集合常用方法

方法說(shuō)明
boolean equals(Object o)比較指定的對(duì)象與此映射是否相等
V get(Object key)返回指定鍵所映射的值;如果此映射不包含該鍵的映射關(guān)系,則返回 null
V put(K key, V value)將指定的值與此映射中的指定鍵關(guān)聯(lián)(可選操作)
void clear()從此映射中移除所有映射關(guān)系(可選操作)
boolean containsKey(Object key)如果此映射包含指定鍵的映射關(guān)系,則返回 true
boolean containsValue(Object value)如果此映射將一個(gè)或多個(gè)鍵映射到指定值,則返回 true
boolean isEmpty()如果此映射未包含鍵-值映射關(guān)系,則返回 true
V get(Object key)返回指定鍵所映射的值;如果此映射不包含該鍵的映射關(guān)系,則返回 null
Set keySet()返回此映射中包含的鍵的 Set 視圖
Set<Map.Entry<K,V>> entrySet()返回此映射中包含的映射關(guān)系的 Set 視圖

代碼示例:

import java.util.*;

public class CollectionsDemo {

   public static void main(String[] args) {
      Map m1 = new HashMap(); 
      m1.put("Zara", "8");
      m1.put("Mahnaz", "31");
      m1.put("Ayan", "12");
      m1.put("Daisy", "14");
      System.out.println();
      System.out.println(" Map Elements");
      System.out.print("\t" + m1);
   }
}
package com.ithmm_01;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

public class MapDemo01 {
    public static void main(String[] args) {
        //創(chuàng)建集合對(duì)象
        Map<String,String> map = new HashMap<String,String>();

        //往集合添加元素
        map.put("2101","zhangxiaohau");
        map.put("2102","wangxiaoer");
        map.put("2103","liuyidao");


        //根據(jù)鍵刪除對(duì)應(yīng)元素
//        System.out.println(map.remove("2102"));//wangxiaoer
//        System.out.println(map.remove("2105"));//null

        //移除所有鍵值對(duì)元素
        //map.clear();//{}

        // boolean containsKey(Object key)
        //          如果此映射包含指定鍵的映射關(guān)系,則返回 true。

        System.out.println(map.containsKey("2101"));//true
        // boolean containsValue(Object value)
        //          如果此映射將一個(gè)或多個(gè)鍵映射到指定值,則返回 true。
        System.out.println(map.containsValue("liuyidao"));//true

        //boolean isEmpty() |如果此映射未包含鍵-值映射關(guān)系,則返回 true。
        System.out.println(map.isEmpty());//false

        System.out.println(map.size());//3

//        V get(Object key)	返回指定鍵所映射的值;如果此映射不包含該鍵的映射關(guān)系,則返回 null。
        System.out.println(map.get("2101"));//zhangxiaohau

        System.out.println(map.get("2102")); //wangxiaoer


//        Set keySet()	返回此映射中包含的鍵的 Set 視圖。
        System.out.println(map.keySet());//3[2103, 2102, 2101]

//        Collection<V> values()
//        返回此映射中包含的值的 Collection 視圖。
        Collection<String> values = map.values();
        for(String value : values){
            System.out.println(value);//liuyidao  wangxiaoer  zhangxiaohau

        }
        //輸出集合對(duì)象
        System.out.println(map);//


    }
}

總結(jié):Map 接口中鍵和值一一映射. 可以通過(guò)鍵來(lái)獲取值。

給定一個(gè)鍵和一個(gè)值,你可以將該值存儲(chǔ)在一個(gè) Map 對(duì)象。之后,你可以通過(guò)鍵來(lái)訪問(wèn)對(duì)應(yīng)的值。

當(dāng)訪問(wèn)的值不存在的時(shí)候,方法就會(huì)拋出一個(gè) NoSuchElementException 異常。

當(dāng)對(duì)象的類型和 Map 里元素類型不兼容的時(shí)候,就會(huì)拋出一個(gè) ClassCastException 異常。

當(dāng)在不允許使用 Null 對(duì)象的 Map 中使用 Null 對(duì)象,會(huì)拋出一個(gè) NullPointerException 異常。

當(dāng)嘗試修改一個(gè)只讀的 Map 時(shí),會(huì)拋出一個(gè) UnsupportedOperationException 異常。

1.3 Map集合的遍歷

方法一:

操作:

  • 獲取所有鍵的集合,用keySet()方法實(shí)現(xiàn)
  • 遍歷鍵的集合,獲取到每一個(gè)鍵,用增強(qiáng)for實(shí)現(xiàn)
  • 根據(jù)鍵去找值。用get(Object key)方法實(shí)現(xiàn)

代碼示例:

package com.ithmm_01;
/**
 *  - 獲取所有鍵的集合,用keySet()方法實(shí)現(xiàn)
 *  - 遍歷鍵的集合,獲取到每一個(gè)鍵,用增強(qiáng)for實(shí)現(xiàn)
 *  - 根據(jù)鍵去找值。用get(Object key)方法實(shí)現(xiàn)
 */

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class MapDemo02 {
    public static void main(String[] args) {
        //創(chuàng)建集合對(duì)象
        Map<String, String> map = new HashMap<String, String>();

        //往集合添加元素
        map.put("2101", "zhangxiaohau");
        map.put("2102", "wangxiaoer");
        map.put("2103", "liuyidao");

        //獲取所有鍵的集合,用keySet()方法實(shí)現(xiàn)
        Set<String> keySet = map.keySet();

        //遍歷鍵的集合,獲取到每一個(gè)鍵,用增強(qiáng)for實(shí)現(xiàn)
        for (String key :keySet){
            // 根據(jù)鍵去找值。用get(Object key)方法實(shí)現(xiàn)
            String value = map.get(key);
            System.out.println(key + "," +value);
        }

    }
}

控制臺(tái)輸出:

2103,liuyidao
2102,wangxiaoer
2101,zhangxiaohau

方法二:

操作:

1.獲取所有鍵值對(duì)對(duì)象的集合

Set<Map.Entry<K,V>> entrySet()返回此映射中包含的映射關(guān)系的 Set 視圖。

2.遍歷鍵值對(duì)對(duì)象的集合,得到每一個(gè)鍵值對(duì)對(duì)象

用增強(qiáng)for實(shí)現(xiàn),得到每一個(gè)Map.Entry

3.根據(jù)鍵值對(duì)對(duì)象獲取鍵和值

用getKey()方法得到鍵

用getValue()方法得到值

代碼示例:

package com.ithmm_01;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class MapDemo03 {
    public static void main(String[] args) {
        //創(chuàng)建集合對(duì)象
        Map<String, String> map = new HashMap<String, String>();

        //往集合添加元素
        map.put("2101", "zhangxiaohau");
        map.put("2102", "wangxiaoer");
        map.put("2103", "liuyidao");

        //獲取所有鍵值對(duì)對(duì)象的集合
        Set<Map.Entry<String, String>> entrySet = map.entrySet();

        //遍歷鍵值對(duì)對(duì)象的集合,得到每一個(gè)鍵值對(duì)對(duì)象
        //用增強(qiáng)for實(shí)現(xiàn),得到每一個(gè)Map.Entry
        for (Map.Entry<String, String> ss : entrySet) {
            //根據(jù)鍵值對(duì)對(duì)象獲取鍵和值
            String key = ss.getKey();
            String value = ss.getValue();

            System.out.println(key + "," + value);

        }
    }
}

控制臺(tái)輸出:

2103,liuyidao
2102,wangxiaoer
2101,zhangxiaohau

到此這篇關(guān)于Java集合類之Map集合的特點(diǎn)及使用詳解的文章就介紹到這了,更多相關(guān)Java Map集合內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java之JSF框架案例詳解

    Java之JSF框架案例詳解

    這篇文章主要介紹了Java之JSF框架案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • Java中的CompletableFuture原理與用法

    Java中的CompletableFuture原理與用法

    CompletableFuture 是由Java8引入的,這讓我們編寫清晰可讀的異步代碼變得更加容易,該類功能比Future 更加強(qiáng)大,在Java中CompletableFuture用于異步編程,異步通常意味著非阻塞,運(yùn)行任務(wù)單獨(dú)的線程,與主線程隔離,這篇文章介紹CompletableFuture原理與用法,一起看看吧
    2024-01-01
  • 深入分析JAVA 反射和泛型

    深入分析JAVA 反射和泛型

    這篇文章主要介紹了JAVA 反射和泛型的的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • 使用Java實(shí)現(xiàn)一個(gè)能保留計(jì)算過(guò)程的計(jì)算器

    使用Java實(shí)現(xiàn)一個(gè)能保留計(jì)算過(guò)程的計(jì)算器

    計(jì)算器是我們?nèi)粘I钪谐S玫墓ぞ咧?它能夠進(jìn)行基本的數(shù)學(xué)運(yùn)算,如加法、減法、乘法和除法,而在設(shè)計(jì)一個(gè)計(jì)算器時(shí),我們可以通過(guò)使用Java編程語(yǔ)言來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的控制臺(tái)計(jì)算器,并且讓它能夠保留計(jì)算過(guò)程,文中有詳細(xì)的代碼示例,需要的朋友可以參考下
    2023-11-11
  • Spring?BeanFactory?與?FactoryBean?的區(qū)別詳情

    Spring?BeanFactory?與?FactoryBean?的區(qū)別詳情

    這篇文章主要介紹了Spring?BeanFactory?與?FactoryBean?的區(qū)別詳情,BeanFactory?和?FactoryBean?的區(qū)別卻是一個(gè)很重要的知識(shí)點(diǎn),在本文中將結(jié)合源碼進(jìn)行分析講解,需要的小伙伴可以參考一下
    2022-05-05
  • 深入理解Java中的類加載器原理

    深入理解Java中的類加載器原理

    這篇文章主要介紹了深入理解Java中的類加載器原理,類加載器負(fù)責(zé)加載所有的類,系統(tǒng)為所有被載入內(nèi)存中的類生成一個(gè)java.lang.Class實(shí)例,需要的朋友可以參考下
    2024-01-01
  • springboot集成@DS注解實(shí)現(xiàn)數(shù)據(jù)源切換的方法示例

    springboot集成@DS注解實(shí)現(xiàn)數(shù)據(jù)源切換的方法示例

    本文主要介紹了springboot集成@DS注解實(shí)現(xiàn)數(shù)據(jù)源切換的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • java 防盜鏈詳解及解決辦法

    java 防盜鏈詳解及解決辦法

    這篇文章主要介紹了 java 防盜鏈詳解及解決辦法的相關(guān)資料,這里介紹了防盜鏈的概念、產(chǎn)生原因及Http中的referer,最后介紹解決辦法,需要的朋友可以參考下
    2017-07-07
  • RestTemplate使用之如何設(shè)置請(qǐng)求頭、請(qǐng)求體

    RestTemplate使用之如何設(shè)置請(qǐng)求頭、請(qǐng)求體

    這篇文章主要介紹了RestTemplate使用之如何設(shè)置請(qǐng)求頭、請(qǐng)求體問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java 在Word中創(chuàng)建郵件合并模板并合并文本和圖片的操作方法

    Java 在Word中創(chuàng)建郵件合并模板并合并文本和圖片的操作方法

    通過(guò)Java程序展示如何來(lái)實(shí)現(xiàn)創(chuàng)建模板,并通過(guò)郵件合并功能來(lái)合并文本數(shù)據(jù)和圖片數(shù)據(jù)的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-07-07

最新評(píng)論