为什么我们需要Java Enum的Set和Map

时间:2014-12-31 13:58:48

标签: java enums enumset enum-map

我是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?

我更了解实际情况。

1 个答案:

答案 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像素变化。