【问题标题】:Get String of concatenated Enum long values using Java Stream使用 Java Stream 获取串联的 Enum long 值的字符串
【发布时间】:2021-08-10 13:15:09
【问题描述】:

我有一个 int 值的枚举:

public enum Enum{
    ONE(1) ,
    TWO(2) ,
    THREE(3),
    FOUR(4) ;

    private final long id;

    Enum(final long id) {
        this.id = id;
    }

    @Override
    public long getId() {
        return this.id;
    }
}

我正在尝试使用 java 流在字符串中打印所有枚举的 id。像这样的:

String ids = Stream.of(Enum.values())
                   .map(value -> value.getId())
                   .collect(Collectors.joining(",");

我尝试mapToObj 并装箱,但我的 IDE 无法识别它。请帮忙

【问题讨论】:

    标签: java java-8 java-stream


    【解决方案1】:

    您应该先映射到String,然后再收集到String

    String ids = Stream.of(Enum.values())
            .map(value -> String.valueOf(value.getId()))
            .collect(Collectors.joining(","));
    

    输出:

    1,2,3,4
    

    【讨论】:

      【解决方案2】:

      您可以在Enum 中添加一个方法来返回您的 id 的字符串值。

      public String getIdValue() {
          return String.valueOf(this.id);
      }
      

      Collectors.joining 需要 String 的流,但您当前传递的是 long 流。

      return Stream.of(Enum.values())
                   .map(Enum::getIdValue)
                   .collect(Collectors.joining(",");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-20
        • 2019-08-05
        • 2013-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多