代码之家  ›  专栏  ›  技术社区  ›  mel3kings

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

  •  2
  • mel3kings  · 技术社区  · 6 年前

    我正在尝试使用以下格式生成特定字符串: *.*.*.* 可以这么说 QUEUE1.NONE.QUEUE3.NONE SET1 将包含的事件 QUEUE1 等等等等。

    下面是我想到的,但我认为它太冗长了,有没有一种更有效的方法来使用流呢?

    使用问题 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();
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   Misha    6 年前

    你不必要地把事情复杂化了。为什么不简单点?

    String.join(DELIMITER,
        SET1.contains(event) ? VALUE1 : SKIP,
        SET2.contains(event) ? VALUE2 : SKIP,
        SET3.contains(event) ? VALUE3 : SKIP,
        SET4.contains(event) ? VALUE4 : SKIP
    );