1

我有一个包含字段 is 和 is_searchable 数据的列表

field_id i_searchable
1234     1
2344     0
4553     1

我正在遍历列表以检查数据是否可搜索然后返回 true 否则返回 false

 public boolean validate() {
        LOGGER.info("in validate");
        boolean isSearchValue = false;
        LOGGER.info("is isSearchable" + fieldList.size());
        for (Field formFieldValMap : fieldList) {
            if (formFieldValMap.getIsSearchableField().equals("0")) {

                isSearchValue = false;
            } else {
                isSearchValue = true;
            }
        }

        return isSearchValue;
    }

上面的函数返回真,我应该返回假。如果列表中 is_searchable 中的所有数据都为 1,那么只有它应该返回真。

4

4 回答 4

4

可能是另一种方式是假设列表全是 1。一看到 0 就将其设置为 false 并从循环中返回。

  boolean isSearchValue = true;


    for (Field formFieldValMap : fieldList) {
                if (formFieldValMap.getIsSearchableField().equals("0")) {

                    isSearchValue = false;
                    return;
                } 
            }

注意:您可能需要注意其他条件,例如如果列表为空等该怎么办,

于 2012-10-02T16:14:11.333 回答
1

如果要完成循环:

boolean isSearchValue = true;
for (Field formFieldValMap : fieldList) {
   isSearchValue &= formFieldValMap.getIsSearchableField().equals("1");
}
return isSearchValue;

除此以外:

for (Field formFieldValMap : fieldList) {
   if (formFieldValMap.getIsSearchableField().equals("0")) {
       return false;
   }
}
return true;
于 2012-10-02T16:16:51.247 回答
0

您的代码只是告诉最后一个元素是否不等于“0”。用这个:

 public boolean validate() {
        LOGGER.info("in validate");
        boolean isSearchValue = false;
        LOGGER.info("is isSearchable" + fieldList.size());
        for (Field formFieldValMap : fieldList) {
            if (formFieldValMap.getIsSearchableField().equals("0")) {

                return false; //if any
            } 
        }

        return true;
    } 
于 2012-10-02T16:15:08.357 回答
0

我参加聚会有点晚了,但对于使用 Java 8 的未来读者来说,这可以使用流 API 来解决。

public boolean validate() {
    return fieldList.stream().map(Field::getIsSearchableField).allMatch("1"::equals);
}
于 2015-09-17T14:02:57.777 回答