问题陈述: -
columns
columnsList
中attributes
中(attr.getName())
所有column
是否存在。{/ li>
columnsList
中不存在来自attributes
的任何boolean foundData
,则boolean foundData
应该为假。 column
应为false。 (attr.getName())
中存在attr.getName()
且状态也成功,则将计数器增加一个 List<String> columnsList = getColumns(service.getColumns());
List<Attribute<?>> attributes = beClient.getAttributes(columnsList);
for (String column : columnsList) {
for(Attribute<?> attr : attributes) {
if(!attr.getName().equals(column) || !attr.getStatus().equals("SUCCESS")) {
foundData=false;
break;
} else if(attr.getName().equals(column) && attr.getStatus().equals("SUCCESS")) {
count_success.incrementAndGet();
}
}
}
将返回列名称。
以下是我的代码。我确信,我在下面的代码中搞砸了一些东西。
{{1}}
任何人都可以帮我吗?
我的代码中发生了什么错误,如果它不匹配,它将使用属性检查每个列,它将在每次循环时进行。我相信哪个不对。
答案 0 :(得分:1)
我会为属性创建一个Map<String,String>
。然后,您可以使用Collection实用程序。例如,对于步骤1
ArrayList<String> copyOfColumns = new ArrayList<String>(columnsList );
copyOfColumns.removeAll(map.keySet());
if (copyOfColumns.size() > 0)
// you have a column that isn't in the attribute
对于第3步来说,它是微不足道的,例如:
if (map.values().contains("FAILURE"))
// you had a failure
我会将其他人留作练习......: - )
答案 1 :(得分:0)
为属性名称实现equals和hashcode。迭代columnList并创建一个Attribute对象。然后检查属性列表中是否存在该属性。那么你的代码就很简单了。
答案 2 :(得分:0)
检查这个重新考虑的代码是否有用......
List<String> columnsList = getColumns(service.getColumns());
List<Attribute<?>> attributes = beClient.getAttributes(columnsList);
for (String column : columnsList) {
boolean isPresent =false;
boolean isSuccess = true;
for(Attribute<?> attr : attributes) {
if(attr.getName().equals(column)){
isPresent = true;
}
if(!attr.getStatus().equals("SUCCESS")){
isSuccess = false;
}
}
if(!isPresent || !isSuccess){
foundData=false;
}else{
count_success.incrementAndGet();
}
}