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

Java中EnumMap和EnumSet枚舉操作類(lèi)的簡(jiǎn)單使用詳解

 更新時(shí)間:2023年11月08日 08:55:21   作者:你就像甜甜的益達(dá)  
這篇文章主要介紹了Java中EnumMap和EnumSet枚舉操作類(lèi)的簡(jiǎn)單使用詳解,EnumMap是Map接口的一種實(shí)現(xiàn),專(zhuān)門(mén)用于枚舉類(lèi)型的鍵,所有枚舉的鍵必須來(lái)自同一個(gè)枚舉?EnumMap不允許鍵為空,允許值為空,需要的朋友可以參考下

EnumMap

這個(gè)類(lèi),1.5就出了,繼承AbstractMap,說(shuō)白了就是個(gè)map,只是他的key是枚舉: Enummap也是線(xiàn)程不安全的,內(nèi)部實(shí)現(xiàn)了迭代器,如果有線(xiàn)程安全問(wèn)題,記得轉(zhuǎn)迭代器,使用這個(gè)方法轉(zhuǎn)就好enumMap.entrySet().iterator():

在這里插入圖片描述

在這里插入圖片描述

使用就是直接當(dāng)做map就好了,為啥要使用這個(gè)類(lèi),很簡(jiǎn)單,快,進(jìn)行了部分優(yōu)化,所以當(dāng)key為枚舉的時(shí)候盡量使用這個(gè)類(lèi):

 @org.junit.Test
  public void test2() {
    EnumMap<Season, String> enumMap = new EnumMap<>(Season.class);
    HashMap<Season, String> aaa = new HashMap();
    enumMap.put(Season.SPRING, "春天");
    enumMap.put(Season.SUMMER, "夏天");
    enumMap.put(Season.AUTUMN, "秋天");
    enumMap.put(Season.WINTER, "冬天");
    System.out.println(enumMap);
    aaa.put(Season.SPRING, "春天");
    aaa.put(Season.SUMMER, "夏天");
    aaa.put(Season.AUTUMN, "秋天");
    aaa.put(Season.WINTER, "冬天");
    System.out.println(aaa);
  }

enum Season {
  SPRING, SUMMER, AUTUMN, WINTER;
}

性能比較測(cè)試:

 @org.junit.Test
  public void test3() {
    EnumMap<Season, String> enumMap = new EnumMap<>(Season.class);
    HashMap<Season, String> aaa = new HashMap();
    long l = System.currentTimeMillis();
    for (int i = 0; i < 100000; i++) {
      enumMap.put(Season.SPRING, "春天");
      enumMap.put(Season.SUMMER, "夏天");
      enumMap.put(Season.AUTUMN, "秋天");
      enumMap.put(Season.WINTER, "冬天");
      enumMap.remove(Season.SPRING);
      enumMap.remove(Season.SUMMER);
      enumMap.remove(Season.AUTUMN);
      enumMap.remove(Season.WINTER);
    }
    long l2 = System.currentTimeMillis();
    System.out.println(l2 - l);
    long l3 = System.currentTimeMillis();
    for (int i = 0; i < 100000; i++) {
      aaa.put(Season.SPRING, "春天");
      aaa.put(Season.SUMMER, "夏天");
      aaa.put(Season.AUTUMN, "秋天");
      aaa.put(Season.WINTER, "冬天");
      aaa.remove(Season.SPRING);
      aaa.remove(Season.SUMMER);
      aaa.remove(Season.AUTUMN);
      aaa.remove(Season.WINTER);
    }
    long l4 = System.currentTimeMillis();
    System.out.println(l4 - l3);
  }

執(zhí)行結(jié)果:快樂(lè)一倍左右吧

在這里插入圖片描述

EnumSet

跟enummap差不多,大部分方法跟Set差不多,只不過(guò)構(gòu)建方法加了很多:

在這里插入圖片描述

提供了很多靜態(tài)的構(gòu)建方法:

在這里插入圖片描述

簡(jiǎn)單的構(gòu)建方法測(cè)試:

 @org.junit.Test
  public void test1() {
    //創(chuàng)建一個(gè)EnumSet集合,集合元素就是Season枚舉類(lèi)的全部枚舉值
    EnumSet es = EnumSet.allOf(Season.class);
    System.out.println(es);

    //創(chuàng)建一個(gè)EnumSet空集合,只頂其集合元素是Season類(lèi)的枚舉值
    EnumSet es2 = EnumSet.noneOf(Season.class);
    System.out.println(es2);

    //以枚舉值來(lái)創(chuàng)建EnumSet集合
    EnumSet es3 = EnumSet.of(Season.SUMMER, Season.WINTER);
    System.out.println(es3); //輸出[SUMMER, WINTER]

    //創(chuàng)建一個(gè)包含Season枚舉值從SUMMER到WINTER的EnumSet集合
    EnumSet es4 = EnumSet.range(Season.SUMMER, Season.WINTER);
    System.out.println(es4);//輸出[SUMMER, Fall, WINTER]

    //創(chuàng)建一個(gè)EnumSet集合,其元素和es4集合元素類(lèi)型相同, es4元素+es5元素=Sesson枚舉的全部枚舉值
    EnumSet es5 = EnumSet.complementOf(es4);
    System.out.println(es5);//輸出[SPRING]
  }

執(zhí)行結(jié)果:

在這里插入圖片描述

其他方法就很簡(jiǎn)單,跟set一樣,只不過(guò)還是對(duì)枚舉有優(yōu)化;所以,如果有枚舉set盡量使用這兩個(gè)類(lèi)

到此這篇關(guān)于Java中EnumMap和EnumSet枚舉操作類(lèi)的簡(jiǎn)單使用詳解的文章就介紹到這了,更多相關(guān)EnumMap和EnumSet枚舉操作類(lèi)的使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springSecurity之AuthenticationProvider用法解析

    springSecurity之AuthenticationProvider用法解析

    這篇文章主要介紹了springSecurity之AuthenticationProvider用法解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • FeignClient服務(wù)器拋出異??蛻?hù)端處理方案

    FeignClient服務(wù)器拋出異常客戶(hù)端處理方案

    這篇文章主要介紹了FeignClient服務(wù)器拋出異??蛻?hù)端處理方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • java調(diào)用微信接口實(shí)現(xiàn)網(wǎng)頁(yè)分享小功能

    java調(diào)用微信接口實(shí)現(xiàn)網(wǎng)頁(yè)分享小功能

    這篇文章主要為大家詳細(xì)介紹了java調(diào)用微信接口實(shí)現(xiàn)網(wǎng)頁(yè)分享小功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • 10分鐘帶你徒手寫(xiě)個(gè)Java線(xiàn)程池

    10分鐘帶你徒手寫(xiě)個(gè)Java線(xiàn)程池

    我們自己手動(dòng)實(shí)現(xiàn)的線(xiàn)程池要比Java自身的線(xiàn)程池簡(jiǎn)單的多,我們?nèi)サ袅烁鞣N復(fù)雜的處理方式,只保留了最核心的原理,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-04-04
  • 利用Socket.io 實(shí)現(xiàn)消息實(shí)時(shí)推送功能

    利用Socket.io 實(shí)現(xiàn)消息實(shí)時(shí)推送功能

    這篇文章主要介紹了利用Socket.io 實(shí)現(xiàn)消息實(shí)時(shí)推送功能,需要的朋友可以參考下
    2017-12-12
  • Java數(shù)據(jù)結(jié)構(gòu)之雙端鏈表原理與實(shí)現(xiàn)方法

    Java數(shù)據(jù)結(jié)構(gòu)之雙端鏈表原理與實(shí)現(xiàn)方法

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之雙端鏈表原理與實(shí)現(xiàn)方法,簡(jiǎn)單描述了雙端鏈表的概念、原理并結(jié)合實(shí)例形式分析了java實(shí)現(xiàn)雙端鏈表的相關(guān)操作技巧,需要的朋友可以參考下
    2017-10-10
  • Spring Cache的使用示例詳解

    Spring Cache的使用示例詳解

    SpringCache是構(gòu)建在SpringContext基礎(chǔ)上的緩存實(shí)現(xiàn),提供了多種緩存注解,如@Cachable、@CacheEvict、@CachePut等,本文通過(guò)實(shí)例代碼介紹了Spring Cache的使用,感興趣的朋友一起看看吧
    2025-01-01
  • java Unsafe詳細(xì)解析

    java Unsafe詳細(xì)解析

    Unsafe為我們提供了訪(fǎng)問(wèn)底層的機(jī)制,這種機(jī)制僅供java核心類(lèi)庫(kù)使用,而不應(yīng)該被普通用戶(hù)使用。但是,為了更好地了解java的生態(tài)體系,我們應(yīng)該去學(xué)習(xí)它,去了解它,不求深入到底層的C/C++代碼,但求能了解它的基本功能。下面小編來(lái)和大家一起學(xué)習(xí)
    2019-05-05
  • SpringBoot中集成日志的四種方式

    SpringBoot中集成日志的四種方式

    在開(kāi)發(fā)中,日志記錄是保障應(yīng)用程序健壯性、可維護(hù)性的重要手段,通過(guò)日志,我們可以記錄系統(tǒng)的運(yùn)行狀態(tài)、捕獲異常并進(jìn)行調(diào)試,Spring Boot 默認(rèn)使用的是 Logback,但你也可以根據(jù)需求選擇其他框架,以下是幾種常用的日志集成方法,需要的朋友可以參考下
    2024-10-10
  • Java數(shù)組,去掉重復(fù)值、增加、刪除數(shù)組元素的方法

    Java數(shù)組,去掉重復(fù)值、增加、刪除數(shù)組元素的方法

    下面小編就為大家?guī)?lái)一篇Java數(shù)組,去掉重復(fù)值、增加、刪除數(shù)組元素的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-10-10

最新評(píng)論