我一直在使用Joshua Bloch的出色模式来创建从字符串(或其他类型)到枚举对象的查找。创建枚举对象后,我们需要将地图创建为:
private static final Map<String, MyEnumType> MY_MAP = Stream.of(values()) .collect(toMap(MyEnumType::myFunction, e -> e));
在那里myFunction
返回我要地图的字符串。然后,我们创建一个使用Map通过键查找对象的静态方法。
这很好用,但是现在我需要从多个字符串映射每个枚举对象。
我已经将myFunction更新为return List<String>
。现在,我希望我的流在列表上进行迭代,将e
对象插入Map中,但是我还不太清楚该怎么做。
我认为问题在于,如果我创建一个Stream,则会丢失e
要插入的对象。
更新:我要做什么似乎有些困惑。我有两个有效的答案(所以我很高兴),但我将添加一个示例,该示例可以帮助正在寻求解决同一问题的任何人。
考虑一个星期几的枚举-该类型中应该恰好有7个对象。我正在尝试从文本描述中编写一种查找方法。TUESDAY对象需要从两个不同的键-tuesday
和映射tue
。该myFunction
方法将在列表中返回这两个键
为了查找目的,我需要Map<String, Week>
有两个指向TUESDAY对象的键。
喵喔喔
GCT1015
相关分类