【发布时间】:2012-08-13 18:19:48
【问题描述】:
某些消息类能够根据标签号返回标签名称
由于这个类被实例化了很多次,我有点不愿意为每个实例创建一个 HashMap:
public class Message {
private HashMap<Integer,String> tagMap;
public Message() {
this.tagMap = new HashMap<Integer,String>();
this.tagMap.put( 1, "tag1Name");
this.tagMap.put( 2, "tag2Name");
this.tagMap.put( 3, "tag3Name");
}
public String getTagName( int tagNumber) {
return this.tagMap.get( tagNumber);
}
}
赞成硬编码:
public class Message {
public Message() {
}
public String getTagName( int tagNumber) {
switch( tagNumber) {
case 1: return "tag1Name";
case 2: return "tag2Name";
case 3: return "tag3Name";
default return null;
}
}
}
当你把所有东西都放在一起时(内存、性能、GC、...)
有什么理由坚持使用 HashMap?
【问题讨论】:
-
这不是
enum理想的情况吗? -
如果所有消息的列表都相同,您也可以将地图设为静态。
-
另外,您是否(通过分析)确定类的实例化确实是一个问题?
-
枚举不适合,因为某些标签编号可能未知
-
如果地图是静态的,那么对 put() 的后续调用会发生什么?
标签: java performance hashmap