我是枚举的新手。在学习 Enum 时,我遇到了 EnumSet 和 EnumMap。我知道在使用 EnumSet 和 EnumMap 处理地图和设置时,它比这个问题的散列对应物要好得多。
为什么 EnumSet 或 EnumMap 可能比它们的散列对应物性能更高?
我的问题是
Java中的Enum在什么场景下需要Map和Set?
我对了解实际场景更感兴趣。
我是枚举的新手。在学习 Enum 时,我遇到了 EnumSet 和 EnumMap。我知道在使用 EnumSet 和 EnumMap 处理地图和设置时,它比这个问题的散列对应物要好得多。
为什么 EnumSet 或 EnumMap 可能比它们的散列对应物性能更高?
我的问题是
Java中的Enum在什么场景下需要Map和Set?
我对了解实际场景更感兴趣。
考虑为每个形状对象定义享元的场景,例如:
public enum SHAPE {
TRIANGLE, RECTANGLE, SQUARE, HEXAGON;
}
让我们假设每次为所有这些形状创建的对象都是巨大的。假设它进入数据库并在构造函数中获取一些数据。你做什么?
您使用枚举键和值作为一次性对象将其保存在地图中,然后使用枚举,您说尝试调用如下内容:
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
}
现在,如果我想创建说黄色并希望知道相同的成分,我可以使用 EnumSet 和两种颜色,如绿色和红色。同样,我可以根据我的颜色要求存储多个具有变化的集合。
这只是为了举例,但您甚至可以添加计数以更复杂地说明您需要多少红色、蓝色、绿色像素变化。