写入"in another format"一个默认映射<String,Integer>默认为Integer 0然后根据条件统计出现次数
Write "in another format" a default map <String,Integer> by default to Integer 0 and then based on condition count the occurrencies
我有一个默认的键值映射
private Map<String, Integer> output = Stream.of(MyEnumCode.values())
.collect(Collectors.toMap(e -> e.code, e -> 0));//default EN1:0,ENS:0..
注意我的枚举是这种格式
public enum MyEnum{
EN1("EN1"), ENS("ENS"), ENT("ENT").....;
String code;
MyEnum(String code) {
this.code = code;
}
之后有一部分代码带有switch语句,根据条件确定MyEnumCodeValue,并再次重复计算这些枚举值的出现次数:
output.merge(MyEnumCode.code, 1, Integer::sum); //-->outuput like EN1:3,ENS:1 (based on occurrencies)
所以默认情况下我读取这个枚举代码并将它们收集到一个映射中,默认情况下输出 0。
有没有另一种方法可以用另一种方式实现相同的结果?
提前致谢!
您可以避免在映射中添加所有枚举值的第一条语句。
private Map<String, Integer> output = Stream.of(MyEnumCode.values())
.collect(Collectors.toMap(e -> e.code, e -> 0));//default EN1:0,ENS:0..
除了这样做,您还可以这样做。
private Map<String, Integer> output = new HashMap<>();
并且在将值放入地图时,您可以使用,
output.put(enumKey, output.getOrDefault(enumKey, 1));
但是两个地图的输出可能不同。就像这张地图将只包含那些出现次数超过一个的键。
更新:
private Map<String, Integer> output = Stream.of(MyEnumCode.values())
.collect(Collectors.toMap(e -> e.code, e -> 0));
//Some statements
//....
//....
output.put(enumKey, output.getOrDefault(enumKey, 0) + 1);
此处输出映射将出现所有枚举键,无论是 0 还是非 0。
我有一个默认的键值映射
private Map<String, Integer> output = Stream.of(MyEnumCode.values())
.collect(Collectors.toMap(e -> e.code, e -> 0));//default EN1:0,ENS:0..
注意我的枚举是这种格式
public enum MyEnum{
EN1("EN1"), ENS("ENS"), ENT("ENT").....;
String code;
MyEnum(String code) {
this.code = code;
}
之后有一部分代码带有switch语句,根据条件确定MyEnumCodeValue,并再次重复计算这些枚举值的出现次数:
output.merge(MyEnumCode.code, 1, Integer::sum); //-->outuput like EN1:3,ENS:1 (based on occurrencies)
所以默认情况下我读取这个枚举代码并将它们收集到一个映射中,默认情况下输出 0。 有没有另一种方法可以用另一种方式实现相同的结果?
提前致谢!
您可以避免在映射中添加所有枚举值的第一条语句。
private Map<String, Integer> output = Stream.of(MyEnumCode.values())
.collect(Collectors.toMap(e -> e.code, e -> 0));//default EN1:0,ENS:0..
除了这样做,您还可以这样做。
private Map<String, Integer> output = new HashMap<>();
并且在将值放入地图时,您可以使用,
output.put(enumKey, output.getOrDefault(enumKey, 1));
但是两个地图的输出可能不同。就像这张地图将只包含那些出现次数超过一个的键。
更新:
private Map<String, Integer> output = Stream.of(MyEnumCode.values())
.collect(Collectors.toMap(e -> e.code, e -> 0));
//Some statements
//....
//....
output.put(enumKey, output.getOrDefault(enumKey, 0) + 1);
此处输出映射将出现所有枚举键,无论是 0 还是非 0。