我是Enum的新手。在我学习Enum的过程中,我遇到了EnumSet和EnumMap。据我所知,使用EnumSet和EnumMap处理map和set时要比这个问题中的哈希对象好得多。
Why an EnumSet or an EnumMap is likely to be more performant than their hashed counterparts?
我的问题是
在什么情况下我们需要在Java中使用Map和Set for Enum?
我更了解实际情况。
答案 0 :(得分:1)
考虑为每个形状对象定义flyweight的场景,如:
public enum SHAPE {
TRIANGLE, RECTANGLE, SQUARE, HEXAGON;
}
让我们假设每次所有这些形状的对象都是巨大的。假设它进入DB并在构造函数中提取一些数据。你做了什么?
使用枚举键和值将其保存在地图中作为一个时间对象,然后使用枚举,您可以尝试并调用以下内容:
public double calculateArea(SHAPE shape) {
Figure figure = map.get(shape);//you dont create object but take it from a map
return figure.calculate();
}
对于EnumSet,请考虑使用基本颜色的枚举,如:
enum COLORS {
RED, BLUE, GREEN
}
现在如果我想创建说黄色颜色并希望知道相同的INGREDIENTS,我可以使用EnumSet和两种颜色,如GREEN和RED。同样,我可以根据我的颜色要求存储多个变量集。
这只是出于示例目的,但您甚至可以添加计数,以便更清楚地说明您需要多少RED,BLUE,GREEN像素变化。