我存在几个疑问:
1. 既然 EnumMap 比 HashMap 要效率更高,更少的空间浪费,那么是不是在实际使用中应该尽可能的多使用 EnumMap 呢?只需要自定义一个 enum 类,就可以满足任意的 Key 值。而且 Map 也不存在顺序问题,因此也不用考虑 enum 类插入新参数导致顺序打乱的问题。
2. 引用评论区的一个讨论:
银发的index:自定义的枚举类也可以使用enummap吗? 廖雪峰:你写的类和jdk自带的类没有区别。
银发的index:自定义的枚举类也可以使用enummap吗?
廖雪峰:你写的类和jdk自带的类没有区别。
老师您的这句话是怎么理解呢?
是表明 自定义的枚举类和自带的类没区别,自带的类能用,自定义的类也肯定可以用;还是表明 自定义的类和自带的类没区别,因此没必要去自定义?
如果是后者,自定义的 enum 类不是能够更好地满足任意个数的 key 和 更易懂的 key 命名嘛?所以有没有必要自己重新新建一个 enum 类呢?
3. 假设新建了 enum 类,对于新建的 enum 类是否还需要覆写 equals 方法?(枚举类不存在重复,应该就不存在相同的 key 值指向不同的 value,不同的 key 指向相同的 value。是否就说明不需要 equals 方法呢?)
PS: 其实写完问题之后心里差不多也有了答案,但是还是希望能够听听标准答案。
实际使用中
哪有那么多 枚举 给你 用。。。。
枚举类定义的是常量,常量的值初始化后不能再改变;
枚举类是通过定义的常量实现实例化的,而且因为上面的这个特性,枚举类的每个实例对象也是唯一的,无法通过new关键字创建实例。
所以枚举类只适合常量有限(或者说实例有限)的使用场景。
Sign in to make a reply
日落有星
我存在几个疑问:
1. 既然 EnumMap 比 HashMap 要效率更高,更少的空间浪费,那么是不是在实际使用中应该尽可能的多使用 EnumMap 呢?只需要自定义一个 enum 类,就可以满足任意的 Key 值。而且 Map 也不存在顺序问题,因此也不用考虑 enum 类插入新参数导致顺序打乱的问题。
2. 引用评论区的一个讨论:
老师您的这句话是怎么理解呢?
是表明 自定义的枚举类和自带的类没区别,自带的类能用,自定义的类也肯定可以用;还是表明 自定义的类和自带的类没区别,因此没必要去自定义?
如果是后者,自定义的 enum 类不是能够更好地满足任意个数的 key 和 更易懂的 key 命名嘛?所以有没有必要自己重新新建一个 enum 类呢?
3. 假设新建了 enum 类,对于新建的 enum 类是否还需要覆写 equals 方法?(枚举类不存在重复,应该就不存在相同的 key 值指向不同的 value,不同的 key 指向相同的 value。是否就说明不需要 equals 方法呢?)
PS: 其实写完问题之后心里差不多也有了答案,但是还是希望能够听听标准答案。