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

将来自ifPresentOrElse()的操作应用于流的每个元素

安浩瀚
2023-03-14

在我的Java应用程序中,我使用以下流:

columns.stream()
    .map(columnEncryptors::get)
    .findFirst()
    .ifPresentOrElse(columnEncryptor -> 
        columnEncryptor.encrypt(bankTransaction),
        () -> { throw new IllegalArgumentException("No encryptor"); }
    );

列表包含9个字符串,上面的代码只对第一个执行操作,而对另一个执行操作。

如何更改代码为列表中的每个元素触发相同的操作?

共有2个答案

辛可人
2023-03-14

之所以只能处理第一个,是因为<代码>。findFirst。您可以尝试使用。forEach则将处理流中的所有元素:

columns.stream()
  .map(columnEncryptors::get)
  .forEach((columnEncryptor) -> {
    <LOGIC FOR EACH ELEMENT> 
  })
燕和同
2023-03-14

要将操作应用于不需要findFirst的每个元素,请处理可选的,根本不需要创建流。

columns.forEach(column -> {
    ColumnEncryptor encryptor = columnEncryptors.get(column);
    if (encryptor != null) columnEncryptor.encrypt(bankTransaction)
    else throw new IllegalArgumentException("No encryptor");
});
 类似资料:
  • 给定一个数字字符串,我想在字符串中的每n位数应用一个操作。这可能与java流? 例如,对于字符串,并对每2个字符应用3的和,结果将是。 上面的结果是,因为总和应用于所有字符。

  • 问题内容: 如何将函数应用于变量输入列表?例如,函数返回真值,但不返回函数的实际输出。 预期的输出是: 我知道是内置的。这只是一个例子。 问题答案: 我认为您的意思是使用而不是: 更简单的是,您可以使用而不是从中导入(感谢@alecxe): 在Python 2.x中,通过将给定函数应用于列表中的每个元素来构造新列表。通过限制使用给定函数求值的元素来构造新列表。 在Python 3.x中,和构建迭代

  • 问题内容: 假设我们有一个标准的流操作方法链: JLS中是否有保证将流操作应用于列表元素的顺序? 例如,是否保证: 将过滤谓词应用于不会在将过滤谓词应用于之前进行。 将映射功能应用于之前,将不会应用映射功能。 会在之前印刷吗? 注意 :我在这里专门谈论, 而不是 在预期并行执行映射和过滤之类的操作的地方。 问题答案: 您想知道的一切都可以在JavaDoc中找到。 流可能具有也可能没有定义的遇到顺序

  • 假设我们有一个流操作的标准方法链: JLS 中是否有任何关于将流操作应用于列表元素的顺序的保证? 例如,是否保证: 在将筛选器谓词应用于“a之前,将筛选器谓词应用于不会发生吗? 在将映射函数应用于之前,将映射函数应用于“def”不会发生? 会先打印 ? 注意:我在这里特别谈论的是< code>stream(),而不是< code>parallelStream(),在后者中,映射和过滤等操作是并行完

  • 在spring中提供了三种不同的方法来连接响应端: 我的目标是记录每个响应(标题状态代码),不管结果如何。 我怎样才能知道上述哪种方法是正确的?

  • 我正在尝试编写一个震动规范,用于在下面提到的预期输出中转换以下输入 输入: <代码>{"城市":"西雅图","州":"西澳","国家":"美国","日期":"10/20/2018","用户列表": [ { "名":"大卫","年龄":"22","性别":"M","公司":"好" }, { "名":"汤姆","年龄":"30","性别":"M","公司":"好" }, { "名":"安妮","年龄"