当前位置: 首页 > 知识库问答 >
问题:

将带有return语句的for循环转换为stream和filter lambda语句[duplicate]

姬朗
2023-03-14

如何将下面的for循环with return语句转换为lambda表达式或流with filter。

for(PhysicianData d : physicianDataList)
    {
        if(d.getPhysicianName().equals(physicianName))
        {
            return true;
        }
    }

共有3个答案

华恩
2023-03-14

使用它:

    class PhysicianData {
    String physicianName;

    public void setPhysicianName(final String physicianName) {
        this.physicianName = physicianName;
    }

    public String getPhysicianName() {
        return physicianName;
    }
}

@Test
void test() {
    PhysicianData one = new PhysicianData();
    one.setPhysicianName("A");
    PhysicianData two = new PhysicianData();
    two.setPhysicianName("B");
    List<PhysicianData> physicianDataList = List.of(one, two);
    assertEquals(forMethod("A", physicianDataList), streamMethode("A", physicianDataList));
}

private boolean forMethod(final String physicianName, final List<PhysicianData> physicianDataList) {
    for (PhysicianData d : physicianDataList) {
        if (d.getPhysicianName().equals(physicianName)) {
            return true;
        }
    }
    return false;
}

private boolean streamMethode(final String physicianName, final List<PhysicianData> physicianDataList) {
    return physicianDataList.stream().anyMatch(x-> x.getPhysicianName().equals(physicianName));
}
赖杰
2023-03-14

由于您正在寻找与名称相等检查匹配的任何内容(任何操作词),我建议查看Stream::anyMatch()方法,以及它的其他对应的Stream::allMatch()Stream::noneMatch()。上面的代码可以重写为:

boolean result = physicianDataList
    .stream()
    .anyMatch(physicianData -> physicianData.getPhysicianName().equals(physicianName);
姬念
2023-03-14

使用anyMatch()

boolean result = physicianDataList.stream()
            .map(PhysicianData::getPhysicianName) // Stream of names
            .filter(Objects::nonNull) //Skip nulls
            .anyMatch(name -> name.equals(physicianName));
           
 类似资料:
  • 问题内容: 我有一个二维布尔数组’poorSignal’,需要编写一个返回网格的方法,如果数组上的某个点为true,则显示X,如果为false,则显示O。这是我的代码: 当我编译时,它在方法的最后一行给出了“丢失的返回语句”。我也不确定在打印数组时’return“ \ n”是否可以添加新行。 这是一个分配问题,所以我不能直接打印它,也不能仅打印布尔值-它必须是产生网格的方法。 问题答案: 编译器无

  • 下面是我的普通for循环,我想重构相同的代码以使用java8 IntStream。 下面是经过重构的版本 但在返回时会出现错误,如上图所示。 错误:意外的返回值 如何以恰当的方式重构上述代码?

  • 问题内容: 现在,父级for循环()在第一个findOne触发之前完成,因此,这仅循环通过repliesIDsArray..asynchronous。的最后一个元素。 此代码集的承诺版本的正确语法是什么?Promisification的新手,想知道如何开始Promisify +遍历数组+解释if语句。 蓝鸟是必需的,并且被调用。 问题答案: 正如本杰明所说,不要使用循环,而应使用(或) 在此处查看

  • 我得到的错误是“缺少return语句”,代码如下: 有人能帮帮我吗?多谢.

  • 通常都听到别人说,计算机很牛逼,很聪明,其实计算机一点都不聪明,光是你要跟他沟通,都会气 shi 你,聪明的是在写程序的你。 写程序就是跟计算机沟通,告诉它要做什么。 竟然是这样,那么肯定缺少不了一些沟通逻辑。比如你要告诉计算机在什么情况下做什么?或者在哪个时间点做什么? 这都需要用到逻辑判断。这一章节,主要就是说这个。 目录

  • 问题内容: 因此,我正在为不和谐而开发一个聊天机器人,现在正在开发一个可以用作待办事项列表的功能。我有一个命令可以将任务添加到列表中,并将它们存储在字典中。但是,我的问题是以更易读的格式返回列表(参见图片)。 任务存储在一个称为中。但是,为了使bot实际发送消息,我需要使用一条语句,否则它将仅将其打印到控制台而不是实际的聊天记录(参见图片)。 这是我尝试解决的方法,但是由于我使用了for循环,因此