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

Java集合類之Map集合的特點及使用詳解

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

1、Map集合概述和使用

1.1 Map集合概述

java.util
接口 Map<K,V>

類型參數(shù):

K - 此映射所維護的鍵的類型

V - 映射值的類型

public interface Map<K,V>

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

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

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

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

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

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

1.2 Map集合常用方法

方法說明
boolean equals(Object o)比較指定的對象與此映射是否相等
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)如果此映射將一個或多個鍵映射到指定值,則返回 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)建集合對象
        Map<String,String> map = new HashMap<String,String>();

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


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

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

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

        System.out.println(map.containsKey("2101"));//true
        // boolean containsValue(Object value)
        //          如果此映射將一個或多個鍵映射到指定值,則返回 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

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


    }
}

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

給定一個鍵和一個值,你可以將該值存儲在一個 Map 對象。之后,你可以通過鍵來訪問對應(yīng)的值。

當訪問的值不存在的時候,方法就會拋出一個 NoSuchElementException 異常。

當對象的類型和 Map 里元素類型不兼容的時候,就會拋出一個 ClassCastException 異常。

當在不允許使用 Null 對象的 Map 中使用 Null 對象,會拋出一個 NullPointerException 異常。

當嘗試修改一個只讀的 Map 時,會拋出一個 UnsupportedOperationException 異常。

1.3 Map集合的遍歷

方法一:

操作:

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

代碼示例:

package com.ithmm_01;
/**
 *  - 獲取所有鍵的集合,用keySet()方法實現(xiàn)
 *  - 遍歷鍵的集合,獲取到每一個鍵,用增強for實現(xiàn)
 *  - 根據(jù)鍵去找值。用get(Object key)方法實現(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)建集合對象
        Map<String, String> map = new HashMap<String, String>();

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

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

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

    }
}

控制臺輸出:

2103,liuyidao
2102,wangxiaoer
2101,zhangxiaohau

方法二:

操作:

1.獲取所有鍵值對對象的集合

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

2.遍歷鍵值對對象的集合,得到每一個鍵值對對象

用增強for實現(xiàn),得到每一個Map.Entry

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

用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)建集合對象
        Map<String, String> map = new HashMap<String, String>();

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

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

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

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

        }
    }
}

控制臺輸出:

2103,liuyidao
2102,wangxiaoer
2101,zhangxiaohau

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

相關(guān)文章

  • Java之JSF框架案例詳解

    Java之JSF框架案例詳解

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

    Java中的CompletableFuture原理與用法

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

    深入分析JAVA 反射和泛型

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

    使用Java實現(xiàn)一個能保留計算過程的計算器

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

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

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

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

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

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

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

    java 防盜鏈詳解及解決辦法

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

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

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

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

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

最新評論