如何在Java中将Lambda表达式用于嵌套的if-else和for循环

时间:2018-07-10 09:52:38

标签: selenium if-statement lambda foreach java-8

我有以下代码,其中我将接收names的列表作为参数。在循环中,首先我将列表中的索引0值分配给局部变量name。在将列表中的下一个值与name比较之后。如果我们从列表中收到任何不相等的值,则我将result的值分配为1并导致测试用例失败。

下面是数组列表

List<String> names= new ArrayList<String>();
names.add("John");
names.add("Mark");

下面是我的硒测试方法

 public void test(List<String> names)
        String name=null;   
        int a=0;

        for(String value:names){
          if(name==null){
             System.out.println("Value is null");
             name=value;
          }
         else if(name.equals(value)){
             System.out.println("Received Same name");
             name=value;
             }
         else{
              a=1;
              Assert.fail("Received different name in between");
          }
         }

如何将以上代码转换为lambda表达式?我使用的是黄瓜数据模型,因此我从功能文件接收数据作为列表。由于我无法给出清晰的解释,因此只发布了我需要转换为lambda表达式的示例逻辑。

2 个答案:

答案 0 :(得分:1)

是否要查找重复项,每当您有不同的值时,将a设置为1并说断言失败。您可以通过以下方式实现:

let numberOfResults = results.count
if myArray.count > numberOfResults {
    let object = myArray[numberOfResults]
    print(object)
} 

答案 1 :(得分:1)

这是解决方案:它循环检查列表中的所有元素,是否全部相同。 您可以尝试添加或编辑列表,以便获得不同的输出。我已经编写了逻辑,您可以轻松地将其放入JUnit测试中

    List<String> names= new ArrayList<>();
    names.add("John");
    names.add("Mark");

    String firstEntry = names.get(0);
    boolean allMatch = names.stream().allMatch(name -> firstEntry.equals(name));
    System.out.println("All names are the same: "+allMatch);