在Java中使用范围查找枚举
我有这个枚举:
public enum AccountRange {
RANGE1("100,200"), RANGE2("201,300"), RANGE3("301,900");
private final String rangeAccount;
private static final Map<String, AccountRange> lookup = new HashMap<String, AccountRange>();
static {
for (AccountRange d : AccountRange.values()) {
lookup.put(d.getRangeAccount(), d);
}
}
private AccountRange(String rangeAccount) {
this.rangeAccount = rangeAccount;
}
public String getRangeAccount() {
return rangeAccount;
}
public static AccountRange get(String abbreviation) {
return lookup.get(abbreviation);
}
}
要返回RANGE1
,我需要使用以下命令调用枚举:AccountRange.get("100,200")
但问题是我需要用一个简单的值调用enum,例如:
AccountRange.get("108")
我需要枚举返回RANGE1
,因为108在100到200之间的第一个范围内
AccountRange.get("600")
我需要枚举返回RANGE3
# 1 楼答案
如果你想坚持使用枚举,你可以做以下几点:
# 2 楼答案
您可以将范围存储为一对整数,并在枚举值上迭代,以找到包含要查找的参数的范围:
# 3 楼答案
如果您对google.common.collect的替代解决方案感兴趣: