我需要检查多个这样的条件:
[self.table setSeparatorStyle:UITableViewCellSeparatorStyleSingleLine];
[self.table setSeparatorColor:[UIColor grayColor]];
但是,条件数取决于地图的键数。因此,如果地图有一个值,那么"如果"应该是:
if(condition1 && condition2 && condition3) {
...
}
如果地图有两个键,那么"如果"应该是:
if(condition1) {
...
}
等等。
我的问题是,是否有任何方法可以迭代地图并为" if"添加条件,如:
if(condition1 && condition2) {
...
}
修改
我举了一个代码示例,因为我认为我没有正确解释我的问题。我有这段代码:
for(String key : map.keySet()) {
//Now how I add conditions in every iteration?
}
此代码仅检查两列,我想改进它以检查N。
public Integer count(String columnName1, String valueName1, String columnName2, String valueName2) {
Integer toReturn = 0;
results.first();
for (RowResult result : results.getResults()) {
if(result.get(columnName1).equals(valueName1) &&
result.get(columnName2).equals(valueName2)) {
toReturn++;
}
}
return toReturn;
}
所以,我创建了一个地图,我将列作为键和值来检查值。新的if(result.get(columnName1).equals(valueName1) &&
result.get(columnName2).equals(valueName2) ... &&
result.get(columnNameN).equals(valueNameN)) {
toReturn++;
}
方法应为:
count
答案 0 :(得分:5)
如果你有java 8
,你可以使用这样的东西 Map<String,Boolean> myMap = new HashMap<>();
boolean allMatch = myMap.values().stream().allMatch(value->value);
答案 1 :(得分:4)
使用旗帜是一种方式。
boolean isTrue = true;
for(String key : map.keySet()) {
if(!condition) {
isTrue = false;
break;
}
}
if(isTrue) {
...
}
答案 2 :(得分:1)
也许你的意思是这样的事情
/**
*criterias hold Map<FieldName,ExpectedValue>
*
*/
boolean rowFitsTheCriteria(RowResult row,Map<String,String> criterias){
boolean result = criterias.keySet().stream().allMatch(fieldName->row.get(fieldName).equals(criterias.get(fieldName)));
return result;
}