相关疑难解决方法(0)

如果Map中的所有List值都为空/非空,则使用Streams返回Boolean

给定一个MapString到a 的映射List,有没有办法使用Java Streams返回一个布尔值,其中TRUE表示一个或多个列表有元素?如果地图中的所有列表都为空,则返回FALSE.

Map< String , List<String> > map = …
Run Code Online (Sandbox Code Playgroud)

可以使用Streams替换这个传统的代码吗?

// See if any diffs were found. Loop through the Map, look at each List of diffs to see if non-empty.
boolean anyElementsInAnyList = false;
for (List<String> list : map.values () ) {
    if (!list.isEmpty()) {
        anyElementsInAnyList = true;
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,我们可以在第一次发现后突破检查.无需检查所有Map值(所有列表).如果为了效率,Stream可以执行相同的首次停止工作("短路"操作),那将是很好的.

java java-stream

27
推荐指数
2
解决办法
4万
查看次数

如何匹配流元素但如果不存在则返回false?

我有一个流,想检查是否所有匹配过滤器.如果全部匹配,则返回true.

但是,如果流是空的,我想回来false.

我怎样才能做到这一点?

示例代码:

public boolean validate(Stream<Whatever> stream) {
  // Problem: returns **true** if stream empty.
  // How can **false** be returned if stream is empty?
  return stream.allMatch(Whatever::someCheck);
}
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

10
推荐指数
1
解决办法
3280
查看次数

如何在返回带条件的布尔值的方法上使用流

我正在使用这种方法:

public boolean checkRowsFilterNameBy(String filter){
    waitForElmContainsText(searchButton, "Search");
    List<AuditRow> listRows = auditTable.getTable();
    for(AuditRow row : listRows){
        if(!row.nameStr.equals(filter)||!row.nameStr.contains(filter))
            return false;
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

并且我希望能够使用Stream进行更改,我尝试了以下操作,但是我缺少了一些东西:

listRows.stream().forEach(auditRow -> {
           if(auditRow.actionStr.equals(filter))return true;} else return false;);
Run Code Online (Sandbox Code Playgroud)

但我遇到一个错误。

java list conditional-statements java-stream

5
推荐指数
1
解决办法
1180
查看次数

Java如何使用流映射返回布尔值

我试图为结果返回一个布尔值.

 public boolean status(List<String> myArray) {
      boolean statusOk = false;
      myArray.stream().forEach(item -> {
         helpFunction(item).map ( x -> {
              statusOk = x.status(); // x.status() returns a boolean
              if (x.status()) { 
                  return true;
              } 
              return false;
          });
      });
}
Run Code Online (Sandbox Code Playgroud)

lambda表达式中使用的抱怨变量应该是final或者有效的final.如果我指定statusOk,那么我无法在循环内分配.如何使用stream()和map()返回布尔变量?

foreach lambda java-8 java-stream

1
推荐指数
2
解决办法
1万
查看次数