我有一个像这样的字频数组:
public enum MyEnum {
AA,
BB,
@Deprecated CC,
DD,
@Deprecated EE,
/**
* Retrieve enum values without the @Deprecated annotation
*/
public static List<MyEnum> nonDeprecatedValues() {
return Arrays.stream(MyEnum.values()).filter(value -> {
try {
Field field = MyEnum.class.getField(value.name());
return !field.isAnnotationPresent(Deprecated.class);
} catch (NoSuchFieldException | SecurityException e) {
return false;
}
}).collect(Collectors.toList());
}
}
我必须[("hello", 1), ("world", 5), ("globle", 1)]
这样我才能获得频率到wordCount的地图,如下所示:
[(1,2),(5,1)]
请注意,由于两个单词(&#34; hello&#34;和&#34; globe&#34;)的频率为1,因此reverse
映射的值为reversed
。但是,由于只有一个单词的频率为2
,因此该条目的值为5
。我怎样才能在scala中执行此操作?
更新
我碰巧也想到了这一点:
1
答案 0 :(得分:4)
您可以先按计数分组,然后只获得每组的大小
val frequencies = List(("hello", 1), ("world", 5), ("globle", 1))
val reversed = frequencies.groupBy(_._2).mapValues(_.size).toList
res0: List[(Int, Int)] = List((5,1), (1,2))