Use a LinkedHashMap<String, String>
:
LinkedHashMap<String, String> mapping = new LinkedHashMap<>();
mapping.put("unsupported", "unsupported");
mapping.put("final_result", "final_result");
// ... etc
然后迭代映射直到找到匹配的键:
for (Map.Entry<String, String> entry : mapping.entrySet()) {
if (str.contains(entry.getKey()) {
mailType = entry.getValue();
break;
}
}
这里的关键点是LinkedHashMap
保留插入顺序(与HashMap
)所以你实际上可以指定你想要测试匹配的顺序(其他地图实现也这样做,例如 Guava 的ImmutableMap
; LinkedHashMap
只是开箱即用的一个)。
如果您需要将其嵌套在外壳中,则可以简单地应用相同的模式:
LinkedHashMap<String, LinkedHashMap<String, String>> outerMapping =
new LinkedHashMap<>();
outerMapping.put("template", mapping);
outerMapping.put("properties", someOtherMapping);
然后以相同的方式迭代键:
for (Map.Entry<String, LinkedHashMap<String, String>> outerEntry : outerMapping.entrySet()) {
if (str.contains(outerEntry.getKey()) {
// Apply the iteration above, using outerEntry.getValue().
}
}