仅对以特定字符开头的枚举中的值进行迭代的最有效方法



我有一个Enum类,它有大量的值(与数据库一起使用的转换键(,但在我的情况下,我只需要迭代它的值;c_foo_">

最具成本效益的方法是什么?

我正在使用Java 14。

您可以使用枚举值中的Streams来筛选出您不感兴趣的值。

Arrays.stream(YourEnum.values())
.filter(e -> e.name().startsWith("c_foo_"))
.forEach(...);

另一种可能的方法是,假设您的枚举值有一个定义的顺序:

public enum MyEnum {
BAR, BAZ, DOO, FOO, GEE, MOO
}

你可以使用EnumSet.range:

EnumSet<MyEnum> set = EnumSet.range(MyEnum.BAZ, MyEnum.GEE);

按照枚举中定义的顺序获取从BAZ到GEE的所有元素

[BAZ, DOO, FOO, GEE]

请注意,第一个元素和最后一个元素都是inclusiv。

最新更新