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详解】 在Java编程中,当我们需要处理特定枚举类型(Enum)作为键(Key)的映射关系时,EnumMap和EnumSet成为两种非常实用的工具类。它们是Java集合框架中专门为枚举类型设计的高效容器,提供了...
这篇博客将深入探讨Java枚举的特性和使用方法,包括`EnumSet`和`EnumMap`这两个与枚举相关的数据结构。 首先,枚举定义的基本语法是`public enum EnumName {constant1, constant2, ...}`。每个枚举常量都是`...
本文总结了Effective Java 中关于枚举与注解的知识点,涵盖了枚举类型的优点、使用指南、避免使用 int 常量、使用 EnumSet 和 EnumMap 等。 枚举类型的优点 枚举类型提供了编译时类型安全、自动命名空间隔离、可以...
Java 枚举类型 enum 的详解及使用 Java 枚举类型 enum 是 Java 语言中的一种特殊的数据类型,自从 JDK 1.5 引入枚举...在实际编程中,我们可以使用枚举类型来定义常量、遍历枚举类型、使用 EnumMap 和 EnumSet 等。
除了基本的定义和使用之外,Java 还提供了专门用于枚举类型的容器类,如 `EnumMap` 和 `EnumSet`。 ##### 4.1 EnumMap 使用示例 `EnumMap` 是一个专为枚举类型设计的映射容器,其键必须是枚举类型。例如: ```...
在集合框架中,枚举可用于创建固定大小的集合,如EnumSet和EnumMap。EnumSet是高效且类型安全的集合,适用于存储枚举类型;EnumMap则以枚举类型为键,提供快速访问和操作。 在PPT详解中,可能会详细讲述以下内容: ...
实验报告主要涵盖了Java编程中的高级主题,特别是关于集合框架、映射和枚举类型的应用...同时,实验也涵盖了枚举类型的使用,以及EnumSet和EnumMap的基础应用。通过实际操作,学生能更好地理解和掌握这些高级编程概念。
在使用枚举类型时,我们可以使用 EnumMap 和 EnumSet 两个类来操作枚举类型。例如,在上面的示例代码中,我们使用了 EnumMap 来存储一副扑克牌的花色和牌面大小。使用枚举类型可以使我们的代码更加简洁易懂,同时也...
Java还提供了专门针对枚举的集合类:`EnumMap`和`EnumSet`。`EnumMap`是一个映射,其中的键是枚举类型,而`EnumSet`则是一个高效、不可变的集合,只包含枚举类型中的元素。 二、反射机制 反射机制允许在运行时检查...
Java提供了`EnumSet`和`EnumMap`两种专为枚举设计的集合类。`EnumSet`是一个高效的集合,用于存储枚举类型,而`EnumMap`则是一个键为枚举类型的高效映射表: ```java EnumSet<WeekDay> weekendDays = EnumSet.of...
枚举可以方便地与Java集合框架一起使用,例如放入`EnumSet`和`EnumMap`中。`EnumSet`比普通`Set`更高效,`EnumMap`比普通`Map`在枚举作为键时具有更好的性能。 11. 枚举的常量顺序: 枚举常量的顺序是它们在枚举...
6. **EnumSet和EnumMap** - `EnumSet`:这是一种专门为枚举类型设计的高效集合,提供了类似Set的功能,不允许重复元素,按自然顺序排列。 - `EnumMap`:是基于枚举的键值对容器,它将枚举作为键,性能优秀,内存...
枚举还可以与其他数据结构结合使用,如`EnumMap`和`EnumSet`。`EnumMap`是一种映射,其键由枚举类型构成,而`EnumSet`则是一个高效、线程安全的集合,专门用来存储枚举类型。 此外,枚举在多线程环境下表现出良好的...
枚举类型还可以与其他集合框架结合使用,例如`EnumSet`和`EnumMap`。`EnumSet`是专为枚举设计的高效集合,而`EnumMap`则是一个以枚举类型为键的映射表。 在枚举类型中,还可以定义抽象方法,所有枚举常量必须实现...
11. **EnumSet和EnumMap**:专为枚举类型设计的高效集合实现, EnumSet是Set的优化版本,EnumMap是Map的优化版本,它们在内部使用位运算和数组实现,性能优秀。 以上只是Java集合框架的一部分核心概念,实际开发中...
11. EnumSet与EnumMap:针对枚举类型,Java提供了更高效的Set(EnumSet)和Map(EnumMap)实现,它们在内部优化了存储和操作,特别适合枚举类型的场景。 12. Iterator和Iterable接口:Iterator用于遍历集合元素,...
枚举类可以继承`EnumSet`或`EnumMap`,这两个类提供了针对枚举的优化操作。例如: ```java EnumSet<Color> colors = EnumSet.allOf(Color.class); ``` 通过学习上述知识点,你可以更好地理解和运用Java枚举,...
- `EnumSet`和`EnumMap`是专门为枚举设计的高效集合类,它们提供了针对枚举类型优化的操作。 枚举在Java中的应用广泛,尤其是在设计模式中,如工厂模式、策略模式等。使用枚举可以增强代码的可读性和可维护性,...
5. **EnumSet和EnumMap**: 如果扑克牌的花色和数值用枚举类型定义,那么EnumSet和EnumMap会是理想的容器。它们针对枚举类型做了优化,提供了高效的性能和简洁的代码。 6. **Collections工具类**: 这个静态类提供了...
同时,枚举类型的出现使得常量集合作为类成员更加方便,如EnumSet和EnumMap。 在实际开发中,我们还需要了解如何有效地使用Collection和Iterable接口,以及如何利用Iterator遍历集合。此外,Stream API自Java 8引入...