循环遍历列表

时间:2012-10-02 16:12:36

标签: java list arraylist

我有一个包含字段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;
    }

上面的函数返回我是真的,我应该给我返回false。如果列表中is_searchable中的所有数据都有1则只返回true。

4 个答案:

答案 0 :(得分:4)

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

  boolean isSearchValue = true;


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

                    isSearchValue = false;
                    return;
                } 
            }

注意:您可能需要注意其他条件,例如列出清空等等。

答案 1 :(得分: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;

答案 2 :(得分: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;
    } 

答案 3 :(得分:0)

我参加派对的时间有点晚,但对于使用Java 8的未来读者来说,可以使用流API来解决这个问题。

public boolean validate() {
    return fieldList.stream().map(Field::getIsSearchableField).allMatch("1"::equals);
}