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

Java中EnumMap和EnumSet枚舉操作類的簡單使用詳解

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

EnumMap

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

在這里插入圖片描述

在這里插入圖片描述

使用就是直接當做map就好了,為啥要使用這個類,很簡單,快,進行了部分優(yōu)化,所以當key為枚舉的時候盡量使用這個類:

 @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;
}

性能比較測試:

 @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é)果:快樂一倍左右吧

在這里插入圖片描述

EnumSet

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

在這里插入圖片描述

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

在這里插入圖片描述

簡單的構(gòu)建方法測試:

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

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

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

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

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

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

在這里插入圖片描述

其他方法就很簡單,跟set一樣,只不過還是對枚舉有優(yōu)化;所以,如果有枚舉set盡量使用這兩個類

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

相關文章

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

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

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

    10分鐘帶你徒手寫個Java線程池

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

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

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

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

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

    Spring Cache的使用示例詳解

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

    java Unsafe詳細解析

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

    SpringBoot中集成日志的四種方式

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

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

    下面小編就為大家?guī)硪黄狫ava數(shù)組,去掉重復值、增加、刪除數(shù)組元素的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • 最新評論