为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用流检查多个集合的字符串

如何使用流检查多个集合的字符串

拉丁的传说 2021-10-28 17:02:36
我正在尝试使用以下格式生成特定的字符串:*.*.*.*可以说QUEUE1.NONE.QUEUE3.NONE. 具体来说,这是我的rabbitmq 的路由键,用于根据事件集合确定哪个队列接收特定事件,因此SET1将包含事件QUEUE1等。下面是我想出的,但我认为它太冗长了,有没有更有效的方法使用流来做到这一点?使用的问题flatmap是,如果它在不同的集合中,我必须返回一个不同的值,并且flatmap只是合并这些集合。return Optional.ofNullable(eventName).map(event->{      StringBuffer sb = new StringBuffer()          .append(Optional.of(event).filter(SET1::contains).map(t -> VALUE1).orElse(SKIP)).append(DELIMITER)          .append(Optional.of(event).filter(SET2::contains).map(t -> VALUE2).orElse(SKIP)).append(DELIMITER)          .append(Optional.of(event).filter(SET3::contains).map(t -> VALUE3).orElse(SKIP)).append(DELIMITER)          .append(Optional.of(event).filter(SET4::contains).map(t -> VALUE4).orElse(SKIP));      return sb.toString();
查看完整描述

1 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

您不必要地使选项复杂化。为什么不保持简单?


String.join(DELIMITER,

    SET1.contains(event) ? VALUE1 : SKIP,

    SET2.contains(event) ? VALUE2 : SKIP,

    SET3.contains(event) ? VALUE3 : SKIP,

    SET4.contains(event) ? VALUE4 : SKIP

);


查看完整回答
反对 回复 2021-10-28
  • 1 回答
  • 0 关注
  • 131 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信