0

问题陈述:-

  1. 首先,我需要检查columns我所拥有的所有东西是否都columnsList存在attributes (attr.getName())
  2. 其次,如果任何columnfromcolumnsList不存在,attributes那么boolean foundData应该是错误的。
  3. 第三,如果任何属性状态不成功,boolean foundData则应为假。
  4. 第四,如果column属性中存在(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();
        }
    }
}

谁能帮我这个?

我的代码中发生的错误是对于每一列,如果它不匹配,它将检查属性,它每次都会循环。我相信这是不对的。

4

3 回答 3

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

我会把其他的留作练习...... :-)

于 2013-03-20T05:24:31.763 回答
0

为属性名称实现 equals 和 hashcode。迭代 columnList 并创建一个 Attribute 对象。然后检查该属性是否存在于属性列表中。然后你的代码会很简单。

于 2013-03-20T05:14:39.900 回答
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();
    }   
}
于 2013-03-20T05:36:51.547 回答