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