0

我是枚举的新手。在学习 Enum 时,我遇到了 EnumSet 和 EnumMap。我知道在使用 EnumSet 和 EnumMap 处理地图和设置时,它比这个问题的散列对应物要好得多。

为什么 EnumSet 或 EnumMap 可能比它们的散列对应物性能更高?

我的问题是

Java中的Enum在什么场景下需要Map和Set?

我对了解实际场景更感兴趣。

4

1 回答 1

1

考虑为每个形状对象定义享元的场景,例如:

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 和两种颜色,如绿色和红色。同样,我可以根据我的颜色要求存储多个具有变化的集合。

这只是为了举例,但您甚至可以添加计数以更复杂地说明您需要多少红色、蓝色、绿色像素变化。

于 2014-12-31T14:04:26.430 回答