我正在努力创建一个非常注重性能的事件驱动系统。在这个程序中,我有一个对象需要链接到两个不同的唯一键。该对象包含触发两个不同事件之一时要做什么的参数。
public class MonthConfiguration implements Comparable<MonthConfiguration>, Serializable {
final String monthID;
public final String displayID;
private final Double dte;
public boolean enabled;
...
public MonthConfiguration(String monthID, String displayID, boolean enabled, double dte) {
this.monthID = monthID;
this.displayID = displayID;
this.enabled = enabled;
this.dte = dte;
}
...
@Override
public int compareTo(MonthConfiguration o) {
return this.dte.compareTo(o.dte);
}
}
我目前需要在使用唯一键触发的两个不同回调中快速调用其中一个对象
HashMap<String, MonthConfiguration> monthMap = new HashMap<>()
@Override
public void onEventOne(String key1) {
MonthConfiguration mon1 = monthMap.get(key1)
...
}
@Override
public void onEventTwo(String key2) {
MonthConfiguration mon2= monthMap.get(key2)
...
}
在上面的示例中 key1 != key2,但是 mon1 和 mon2 是相同的。
目前我正在使用代码
MonthConfiguration mon = new MonthConfiguration (monthID, displayID,enabled, dte);
monthMap.put(key1, mon);
monthMap.put(key2, mon);
有一个更好的方法吗?MonthConfiguration 对象的数量相当大,我担心这样做的效率和可能的内存泄漏,因为对象被删除/添加到地图中。