我有一个从依赖项中使用的Java枚举,并希望从中创建一个映射。
让我们说枚举被称为" SomeEnum1":
BLUE(SomeEnum1.builder()
.someOtherIdentifier("ABC")
.someImportantField("DEF")), ...
RED( //etc
我可以使用groupby并从" someImportantField"中获取地图。值为SomeEnum1的列表:
SomeEnum1.values.groupBy(x => x.someImportantField)
但是在这样做的时候,我得到一个Map [String,Array [SomeEnum1]],当我想要的是Map [String,Array [String]]时。我尝试过使用:
SomeEnum1.values.groupBy(_.getSomeImportantField).mapValues(_.name)
但是我得到一个错误,该名称不是Array [.... SomeEnum1]的成员。 还有其他方法可以将结果数组转换为包含枚举名而不是枚举本身吗?
答案 0 :(得分:1)
你错过了一个循环:
SomeEnum1.values.groupBy(_.getSomeImportantField).mapValues(_.map(_.name))
mapValues
遍历每个Map值,这是一个枚举数组。对于每个这些数组,您希望将每个元素转换为String。