最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中EnumMap的使用解析

 更新時間:2023年11月08日 08:34:59   作者:一只小熊貓呀  
這篇文章主要介紹了Java中EnumMap的使用解析,EnumMap?是一種特殊的?Map,它要求自身所有的鍵來自某個枚舉類型,EnumMap?的內(nèi)部可以作為一個數(shù)組來實現(xiàn),因此它們的性能非常好,你可以放心地用?EnumMap?來實現(xiàn)基于枚舉的查詢,需要的朋友可以參考下

EnumMap

EnumMap是一種特殊的 Map,它要求自身所有的鍵來自某個枚舉類型。由于枚舉的約束(元素和索引的映射關系與數(shù)組相似),EnumMap 的內(nèi)部可以作為一個數(shù)組來實現(xiàn),因此它們的性能非常好,你可以放心地用 EnumMap 來實現(xiàn)基于枚舉的查詢。

你只能用枚舉中的元素作為鍵來調(diào)用 put() 方法,除此之外,就和調(diào)用一個普通的 Map 沒什么區(qū)別了。

下面的例子演示了設計模式中的命令模式。這種模式由一個(通常)只包含一個方法的接口開始,然后為該方法創(chuàng)建多個具有不同行為的實現(xiàn)。只需要配置好這些命令對象,程序就會根據(jù)需要來調(diào)用它們。

AlarmPoints.java

public enum AlarmPoints {
    STAIR1, STAIR2, LOBBY, OFFICE1, OFFICE2, OFFICE3,
    OFFICE4, BATHROOM, UTILITY, KITCHEN
}

EnumMaps.java

import java.util.EnumMap;
import java.util.Map;

import static enums.TEST0523.AlarmPoints.*;

interface Command {
    void action();
}

public class EnumMaps {
    public static void main(String[] args) {
        EnumMap<AlarmPoints, Command> em = new EnumMap<>(AlarmPoints.class);
        em.put(KITCHEN,() -> System.out.println("Kitchen fire!"));
        em.put(BATHROOM,() -> System.out.println("Bathroom alert!"));
        for (Map.Entry<AlarmPoints, Command> e : em.entrySet()) {
            System.out.print(e.getKey() + ": ");
            e.getValue().action();
        }
        try {
            // If there's no value for a particular key:
            em.get(UTILITY).action();
        } catch (Exception e) {
            System.out.println("Expected: " + e);
        }
    }
}

運行結果如下:

在這里插入圖片描述

和 EnumSet 一樣,EnumMap 中的元素順序由它們在枚舉中定義的順序決定。

通過 main() 函數(shù)中的末尾部分,可以看到每個枚舉都有個鍵,但是值都是 null ,除非在該鍵上調(diào)用過 put() 方法。

相較于常量特定方法 EnumMap 的優(yōu)勢在于:利用 EnumMap ,你可以改變值對象。而你可以看到常量特定方法在編譯時是不可變的。

正如你在本章稍后會看到的,EnumMap 支持多路分發(fā)(multiple dispatching),以應對多個類型的枚舉共存且相互影響的各種場景。

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

相關文章

  • springboot controller參數(shù)注入方式

    springboot controller參數(shù)注入方式

    這篇文章主要介紹了springboot controller參數(shù)注入方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • springMVC傳遞list對象的三種使用方式

    springMVC傳遞list對象的三種使用方式

    這篇文章主要介紹了springMVC傳遞list對象的三種使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Java 匯編JVM編寫jasmin程序的操作方法

    Java 匯編JVM編寫jasmin程序的操作方法

    這篇文章主要介紹了Java 匯編JVM編寫jasmin程序的操作方法,本文通過幾個示例講解的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • Java實現(xiàn)較大二進制文件的讀、寫方法

    Java實現(xiàn)較大二進制文件的讀、寫方法

    本篇文章主要介紹了Java實現(xiàn)較大二進制文件的讀、寫方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • Java常用數(shù)據(jù)流全面大梳理

    Java常用數(shù)據(jù)流全面大梳理

    計算機程序中,獲取數(shù)據(jù)的方式有多種,比如:程序中直接給出、鍵盤輸入、從數(shù)據(jù)文件中讀取、從數(shù)據(jù)庫中讀取、通過網(wǎng)絡讀取等。為了更有效地進行數(shù)據(jù)的輸入/輸出操作,Java將各種數(shù)據(jù)源的數(shù)據(jù),抽象為“數(shù)據(jù)流”,及stream
    2021-10-10
  • Mybatis中typeAliases的使用

    Mybatis中typeAliases的使用

    這篇文章主要介紹了Mybatis中typeAliases的使用,需要的朋友可以參考下
    2017-08-08
  • SpringMVC中的表現(xiàn)層結果封裝

    SpringMVC中的表現(xiàn)層結果封裝

    這篇文章主要介紹了SpringMVC中的表現(xiàn)層結果封裝,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Java將Exception信息轉為String字符串的方法

    Java將Exception信息轉為String字符串的方法

    今天小編就為大家分享一篇Java將Exception信息轉為String字符串的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Request的包裝類HttpServletRequestWrapper的使用說明

    Request的包裝類HttpServletRequestWrapper的使用說明

    這篇文章主要介紹了Request的包裝類HttpServletRequestWrapper的使用說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 在Spring項目中DTO層的作用和最佳實踐

    在Spring項目中DTO層的作用和最佳實踐

    本文介紹了DTO(Data Transfer Object)在Spring項目中的作用和最佳實踐,通過本文,讀者可以更好地理解DTO在Spring項目中的重要性和如何合理設計DTO以滿足業(yè)務需求,感興趣的朋友跟隨小編一起看看吧
    2026-02-02

最新評論

遵义市| 花垣县| 老河口市| 横峰县| 甘泉县| 福清市| 岳西县| 磐安县| 阜城县| 玉龙| 河间市| 青河县| 安多县| 苍溪县| 德清县| 东乌| 达州市| 永泰县| 博客| 乌鲁木齐县| 哈尔滨市| 津南区| 定安县| 洞口县| 宽城| 赣榆县| 宁蒗| 蓬莱市| 阳山县| 彰武县| 普格县| 海城市| 策勒县| 蚌埠市| 天峻县| 宝丰县| 宜宾市| 雅江县| 凯里市| 洛浦县| 吉隆县|