如果只有一个条目,我需要知道在Set中保持值的“最佳”和最安全的方法。 methodToGetValues()
被广泛用于读取配置文件并返回给定特定键的值列表,在本例中为"enabled"
。对于enabled
键,Set中只返回一个条目,显然是"true"
或"false"
,但是会发生错误。我有以下看起来有点复杂:
Set<String> enabled = methodToGetValues("enabled");
if (!enabled.isEmpty() && enabled.size() < 2 && "true".equals(enabled.iterator().next())) {
...
}
有人可以建议一种更简单但仍然健壮的检查方法吗?
答案 0 :(得分:0)
不确定使用|STATE | NUMBER OF STORES | NUMBER OF TRANSACTIONS |
|-------|------------------|--------------------------|
| ca | 25 | 500 |
|-------|------------------|--------------------------|
| il | 2 | 25 |
|-------|------------------|--------------------------|
来驱动这个数据的用例是什么,但这里有一个选项:
Set<String>
答案 1 :(得分:0)
public Set<String> getValues(final String key){
.....
}
public String getValue(final String key) {
final Set<String> values = getValues(key);
if (values == null || values.size() != 1) {
throw new IllegalStateException("Invalid configuration for give key :" + key);
}
return values.iterator().next();
}
public Boolean getValueAsBoolean(final String key) {
return Boolean.valueOf(getValue(key));
}
您可以修改方法以使accept参数在未找到键时返回默认值。您可以添加不同的方法来返回特定类型对象,如inte,boolean,这样代码看起来更干净
答案 2 :(得分:0)
你的问题要求从Set中获取一些东西。但你的例子只需要检查。
如果您知道在Set中会发生什么,这可以正常工作。
if (enabled != null && enabled.size() == 1 && enabled.contains("true")) {
...
}
否则,如果你只想获得元素但不知道它是什么,你建议的迭代器工作正常。
String getOnlyElement(Set<String> enabled, String default) {
return (enabled == null || enabled.size() != 1) ? default : enabled.iterator().next();
}
我喜欢使用空检查,但这取决于methodToGetValues返回的内容。