`
baoxiaofei
  • 浏览: 32922 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

关于EnumMap、EnumSet的使用

    博客分类:
  • JAVA
 
阅读更多
enum定义是别人的,第一次看见这种用法,就测试了一下。发现EnumMap的使用与网上大家写的不一样呢,哪位大侠知道:

public enum WeekDayOfEnum{
Mon("Monday"), Tue("Tuesday"), Wed("Wednesday"), Thu("Thursday"), Fri( 
    "Friday"), Sat("Saturday"), Sun("Sunday"); 

/* 定义枚举自己的属性 */
private final String day;

// 通过括号给枚举值赋值,就必须有带参构造器和一属性跟方法
private WeekDayOfEnum(String day){
this.day = day;
}

/* 定义枚举自己的方法*/
public static void printDay(int i){
switch(i){
case 1: System.out.println(WeekDayOfEnum.Mon);break;
case 2: System.out.println(WeekDayOfEnum.Tue);break;
case 3: System.out.println(WeekDayOfEnum.Wed);break;
case 4: System.out.println(WeekDayOfEnum.Thu);break;
case 5: System.out.println(WeekDayOfEnum.Fri);break;
case 6: System.out.println(WeekDayOfEnum.Sat);break;
case 7: System.out.println(WeekDayOfEnum.Sun);break;

default:System.out.println("Wrong Number");
}
}

public String getDay(){
return day;
}
}


测试代码:
import java.util.EnumMap;
import java.util.EnumSet;
import java.util.Iterator;
import java.util.Map;

public class EnumTest {

public void testWeekDayOfEnum(){
for(WeekDayOfEnum day : WeekDayOfEnum.values())
System.out.println(day + " : " + day.getDay());
WeekDayOfEnum.printDay(1);
}

public void printEnum(){
for(WeekDayOfEnum days : WeekDayOfEnum.values()){
System.out.println(days.name() + " " + days.getDay());
}
}

public void testWeekDayOfEnumByMap(){
EnumMap<WeekDayOfEnum,String> day = new EnumMap<WeekDayOfEnum, String>(WeekDayOfEnum.class);
day.put(WeekDayOfEnum.Mon,"星期一");
day.put(WeekDayOfEnum.Sat,"星期六");
for(Map.Entry<WeekDayOfEnum, String> entry : day.entrySet()){
String tmp = entry.getKey().getDay();
System.out.println(tmp);
}

/*
Iterator<Map.Entry<WeekDayOfEnum,String>> it = day.entrySet().iterator();
while(it.hasNext()){
Map.Entry<WeekDayOfEnum,String> entry = it.next(); 
System.out.println(entry.getKey().getDay());
}
*/
}

public void testWeekDayOfEnumBySet(){
EnumSet<WeekDayOfEnum> set = EnumSet.allOf(WeekDayOfEnum.class);
for(WeekDayOfEnum days : set)
System.out.println(days.getDay());
}

public static void main(String[] args){
EnumTest et = new EnumTest();
//et.testWeekDayOfEnum();
//et.testWeekDayOfEnumBySet();
//et.printEnum();
et.testWeekDayOfEnumByMap();
}
}

没搞懂,为啥“day.put(WeekDayOfEnum.Mon,"星期一");”这句并没有改变WeekDayOfEnum.Mon的属性值,费解!
分享到:
评论

相关推荐

    一文弄懂EnumMap和EnumSet

    【EnumMap和EnumSet详解】 在Java编程中,当我们需要处理特定枚举类型(Enum)作为键(Key)的映射关系时,EnumMap和EnumSet成为两种非常实用的工具类。它们是Java集合框架中专门为枚举类型设计的高效容器,提供了...

    说说Java中的枚举 转 可以了,够了 包括EnumSet(Map)

    这篇博客将深入探讨Java枚举的特性和使用方法,包括`EnumSet`和`EnumMap`这两个与枚举相关的数据结构。 首先,枚举定义的基本语法是`public enum EnumName {constant1, constant2, ...}`。每个枚举常量都是`...

    2021年EFFECTIVEJAVA读书笔记.docx

    本文总结了Effective Java 中关于枚举与注解的知识点,涵盖了枚举类型的优点、使用指南、避免使用 int 常量、使用 EnumSet 和 EnumMap 等。 枚举类型的优点 枚举类型提供了编译时类型安全、自动命名空间隔离、可以...

    Java枚举类型enum的详解及使用

    Java 枚举类型 enum 的详解及使用 Java 枚举类型 enum 是 Java 语言中的一种特殊的数据类型,自从 JDK 1.5 引入枚举...在实际编程中,我们可以使用枚举类型来定义常量、遍历枚举类型、使用 EnumMap 和 EnumSet 等。

    java枚举类型enum的使用

    除了基本的定义和使用之外,Java 还提供了专门用于枚举类型的容器类,如 `EnumMap` 和 `EnumSet`。 ##### 4.1 EnumMap 使用示例 `EnumMap` 是一个专为枚举类型设计的映射容器,其键必须是枚举类型。例如: ```...

    java集合 框架 泛型

    在集合框架中,枚举可用于创建固定大小的集合,如EnumSet和EnumMap。EnumSet是高效且类型安全的集合,适用于存储枚举类型;EnumMap则以枚举类型为键,提供快速访问和操作。 在PPT详解中,可能会详细讲述以下内容: ...

    高级编程-java实验报告.docx

    实验报告主要涵盖了Java编程中的高级主题,特别是关于集合框架、映射和枚举类型的应用...同时,实验也涵盖了枚举类型的使用,以及EnumSet和EnumMap的基础应用。通过实际操作,学生能更好地理解和掌握这些高级编程概念。

    使用java对一副扑克牌建模

    在使用枚举类型时,我们可以使用 EnumMap 和 EnumSet 两个类来操作枚举类型。例如,在上面的示例代码中,我们使用了 EnumMap 来存储一副扑克牌的花色和牌面大小。使用枚举类型可以使我们的代码更加简洁易懂,同时也...

    Java期末复习——枚举与反射机制

    Java还提供了专门针对枚举的集合类:`EnumMap`和`EnumSet`。`EnumMap`是一个映射,其中的键是枚举类型,而`EnumSet`则是一个高效、不可变的集合,只包含枚举类型中的元素。 二、反射机制 反射机制允许在运行时检查...

    enum枚举类的一些代码demo

    Java提供了`EnumSet`和`EnumMap`两种专为枚举设计的集合类。`EnumSet`是一个高效的集合,用于存储枚举类型,而`EnumMap`则是一个键为枚举类型的高效映射表: ```java EnumSet&lt;WeekDay&gt; weekendDays = EnumSet.of...

    简单总结java枚举类型

    枚举可以方便地与Java集合框架一起使用,例如放入`EnumSet`和`EnumMap`中。`EnumSet`比普通`Set`更高效,`EnumMap`比普通`Map`在枚举作为键时具有更好的性能。 11. 枚举的常量顺序: 枚举常量的顺序是它们在枚举...

    javaenum(枚举)使用详解+总结.pdf

    6. **EnumSet和EnumMap** - `EnumSet`:这是一种专门为枚举类型设计的高效集合,提供了类似Set的功能,不允许重复元素,按自然顺序排列。 - `EnumMap`:是基于枚举的键值对容器,它将枚举作为键,性能优秀,内存...

    Java开发实战从入门到精通视频教程下载第14章 枚举.zip

    枚举还可以与其他数据结构结合使用,如`EnumMap`和`EnumSet`。`EnumMap`是一种映射,其键由枚举类型构成,而`EnumSet`则是一个高效、线程安全的集合,专门用来存储枚举类型。 此外,枚举在多线程环境下表现出良好的...

    Java中的枚举类型Enum示例源代码

    枚举类型还可以与其他集合框架结合使用,例如`EnumSet`和`EnumMap`。`EnumSet`是专为枚举设计的高效集合,而`EnumMap`则是一个以枚举类型为键的映射表。 在枚举类型中,还可以定义抽象方法,所有枚举常量必须实现...

    java集合,java集合

    11. **EnumSet和EnumMap**:专为枚举类型设计的高效集合实现, EnumSet是Set的优化版本,EnumMap是Map的优化版本,它们在内部使用位运算和数组实现,性能优秀。 以上只是Java集合框架的一部分核心概念,实际开发中...

    java工具类 java开发助手 java util

    11. EnumSet与EnumMap:针对枚举类型,Java提供了更高效的Set(EnumSet)和Map(EnumMap)实现,它们在内部优化了存储和操作,特别适合枚举类型的场景。 12. Iterator和Iterable接口:Iterator用于遍历集合元素,...

    java枚举ppt和详细代码

    枚举类可以继承`EnumSet`或`EnumMap`,这两个类提供了针对枚举的优化操作。例如: ```java EnumSet&lt;Color&gt; colors = EnumSet.allOf(Color.class); ``` 通过学习上述知识点,你可以更好地理解和运用Java枚举,...

    Java 常用武器库之枚举1

    - `EnumSet`和`EnumMap`是专门为枚举设计的高效集合类,它们提供了针对枚举类型优化的操作。 枚举在Java中的应用广泛,尤其是在设计模式中,如工厂模式、策略模式等。使用枚举可以增强代码的可读性和可维护性,...

    一个扑克游戏,用于Java集合框架练习.zip

    5. **EnumSet和EnumMap**: 如果扑克牌的花色和数值用枚举类型定义,那么EnumSet和EnumMap会是理想的容器。它们针对枚举类型做了优化,提供了高效的性能和简洁的代码。 6. **Collections工具类**: 这个静态类提供了...

    j2se集合课件是java的基础课程章节之一

    同时,枚举类型的出现使得常量集合作为类成员更加方便,如EnumSet和EnumMap。 在实际开发中,我们还需要了解如何有效地使用Collection和Iterable接口,以及如何利用Iterator遍历集合。此外,Stream API自Java 8引入...

Global site tag (gtag.js) - Google Analytics