在Scala中使用groupBy后推荐的转换地图的方法?

时间:2018-01-30 17:53:42

标签: scala

我有一个从依赖项中使用的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]的成员。 还有其他方法可以将结果数组转换为包含枚举名而不是枚举本身吗?

1 个答案:

答案 0 :(得分:1)

你错过了一个循环:

SomeEnum1.values.groupBy(_.getSomeImportantField).mapValues(_.map(_.name))

mapValues遍历每个Map值,这是一个枚举数组。对于每个这些数组,您希望将每个元素转换为String。