![](/img/trans.png)
[英]how to generate a .txt file from a list whose title is an abbreviation of a full name
[英]How to map abbreviation to full strings?
我想创建一个从缩写到完整字符串的映射,例如: MC - MasterCard
。
稍后,我想将该映射用于不知道缩写但仅完整字符串的Web服务。
这些映射应该是枚举还是HashMaps? 我可以想到以下解决方案:
对于enum
:
String cc = TypeCreditCard.MASTER.getValue("MC").getFullname();
xml.setOrganisation(cc);
对于静态HashMap<String, String>
:
String cc = creditCards.get("MC");
xml.setOrganisation(cc);
您想要什么,为什么?
我将其实现为这样的枚举:
public enum CC {
MC("MasterCard"),
V("VISA");
private CC(String fullString) {
this.fullString = fullString;
}
private String fullString;
public String getFullString() {
return this.fullString;
}
public static CC of(String fullString) {
for (CC cc: CC.values()) {
if (cc.getFullString().equals(fullString) {
return cc;
}
}
return null;
}
}
然后,可以使用得到充分的字符串
String fullString = CC.MC.getfullScreen();
并使用缩写
CC abbreviation = CC.of("MasterCard");
如果您的键可以由enum
描述,那么至少出于以下原因,使用EnumMap
而不是HashMap
是值得的:
EnumMap
针对enum
键进行了优化 enum
作为关键对象时, EnumMap
的性能可能优于HashMap
。 EnumMap
不会在键上调用hashCode
方法,因此不会发生冲突。 更多关于本作的官方文档EnumMap
和这个文章。
这是一个主观的问题。 没有“正确”的答案。
对我来说 枚举最适合将值作为参数传递的用例,并且您希望确保在编译时它是一组众所周知的值之一。
当值表示您的应用程序所作用的数据时,最好使用Map。 如果您的应用程序不需要执行if x = enum then do this
所要求的操作, if x = enum then do this
逻辑,然后使用Map。 如果它使用不同的代码来计算不同的选项,请使用枚举。
如果我只是想将信用卡缩写映射到更具描述性的名称,则可以使用属性文件 (当然可以实现Map)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.