我有一个我正在使用的EnumMap,我将需要保留我传入的项目的顺序。我知道在使用HashMap时,我可以初始化LinkedHashMap以便像这样保留顺序:
HashMap<String, List<String>> contentTypeToIdList = new LinkedHashMap<String, List<String>>();
但是,我想改用EnumMap。我怎么能做这样的事情:
EnumMap<ContentType, List<String>> contentTypeToIdList = new LinkedHashMap<ContentType, List<String>>();
答案 0 :(得分:3)
正如API告诉我们的那样:
枚举映射按其键的自然顺序(声明枚举常量的顺序)进行维护。这反映在集合视图(keySet(),entrySet()和values())返回的迭代器中。
这意味着它是内部排序的,根本不应该以不同方式排序,例如您需要的插入顺序。
答案 1 :(得分:1)
你真的不需要EnumMap
。你可以使用LinkedHashMap
轻松使用 ,但你必须注意你所关注的内容。
Map<ContentType, List<String>> contentTypeToIdList = new LinkedHashMap<>();
这将:
LinkedHashMap
答案 2 :(得分:0)
一些可能性:
LinkedHashMap
和construct an EnumMap
。EnumMap
。ContentType
以包含可变的静态排序信息,这可能是非常hacky但可能还可以进行测试。但我更喜欢上述两个想法。