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

使用Lambda和forEach在集合中查找对象并触发布尔[重复]

陆建木
2023-03-14

说我有这门课

    public class MovieCharacter {

    private String name;

    public String getName() { return name ; }
    public String setName(String name) { this.name = name; }
    }

我正在运行一个测试,并且有一个集合,我想使用一个Lambda来梳理每个对象,看看它是否包含所需的名称字符串。如果找到该名称,则一个布尔值会被触发为“true”。找到后,我不想再次更改布尔值。

Set<MovieCharacter> mySet // assume this Set has previously been created and 
                     // contains 1,000's of MovieCharacter

boolean hasName = false;
mySet.forEach( i -> i.getName().equals("Darth Vader")) // add here?
assertTrue(hasName);

谢谢!

共有1个答案

宋畅
2023-03-14

您描述的行为正是anymatch方法的设计目的:

boolean hasName = mySet.stream().anyMatch(c -> c.getName().equals("Darth Vader"));
 类似资料:
  • 了解如何通过使用布尔运算组合对象组来创建复杂的形状。另外,了解如何使用任何形状(如矩形或椭圆形)遮盖对象。 使用布尔运算组合对象 您可以组合简单的形状来创建复合形状和对象。选择要组合的形状,并使用属性检查器中的以下选项之一: 添加到形状区域 将组件区域添加到底层几何形状中。 从形状区域中减去 将组件区域从底层几何形状中切除。 与形状区域相交 和蒙版功能一样,可使用组件区域来剪切底层几何形状。 排除

  • 给定这样一组对象: 是否有一种方法可以使用ES6在一组对象中找到匹配的对象关键点(本例中为playerId),然后为这些匹配组合其他对象关键点(辅助和点),以便最终的数组如下所示:

  • 问题内容: 我声明一个布尔变量。例如, 现在,如果我执行以下代码段: 我懂了。好吧,我知道它很明显,但是我需要知道其背后的原因。 问题答案: 当您评估对象的布尔值时,Java会将其取消装箱(自装箱功能,自1.5开始)。因此,实际的代码是:。然后它抛出。对于任何装箱的值,将空对象拆箱将引发此异常。 在1.5之前,您必须手动将值拆箱:所以它更明显(也更加冗长:)

  • 我见过许多关于限制Lambda并发执行的SO问题,但没有见过相反的问题。 我需要增加我的并发执行,但有问题。我在SQS队列中触发了一个Lambda。我已经发布了该函数的一个版本,并为它分配了3,000个并发执行(我的限制从默认的1,000增加到了5,000)。 尽管如此,当我运行我的进程时,我看到成千上万的消息在队列中等待,而我的Lambda函数的Monitoring选项卡显示我的“并发执行”从未

  • 我有这样一堂课: 在主要我已经创建了一个包含所有主题的列表。 现在我想打印所有参加课程的学生的所有科目名称。 我试过这样的方法,但它给了我错误: 参数类型字符串void的运算符未定义 我不知道如何使第二个流返回每个学生的和的字符串。我可以将它映射到字符串,然后以某种方式收集它吗?第一个流中的类似内容?

  • 我正在尝试编写一个方法,该方法可以在列表列表中找到对象的索引并利用并行性。这是我的代码。 当我运行以下代码时 输出类似于 换句话说,即使在找到对象之后,搜索仍在继续。不应该是短路操作吗?我错过了什么?此外,在迭代列表或锯齿数组时,利用并行性的最佳方法是什么? 编辑 按照@Sotirios回答中的想法,我得到了以下输出 请注意 即使找到答案也继续搜索。