我遇到了奇怪的行为。我在地图上有地图。在第二次地图迭代期间,我两次调用 getValue()。第一次正确返回值,但第二次调用 getValue() 后总是返回 null,为什么?
Map<Integer, Map<Integer, String>> metricsColors = new HashMap<Integer, Map<Integer, String>>();
for (Entry<Affiliate, Map<Field, ApValue>> rowEntry : apValues.entrySet()) {
Map<Integer, String> metricColor = new HashMap<Integer, String>();
String finalMetricColor = null;
for (Entry<Field, ApValue> fieldValueEntry : rowEntry.getValue().entrySet()) {
if (fieldValueEntry.getKey().getType() == FieldType.CLASSIFICATION) {
metricColor.put(
fieldValueEntry.getKey().getMetrics().getId(),
fieldValueEntry.getValue().getValue()
); // HERE IS CORRECT.
if (fieldValueEntry.getKey().getForFinalClassification() != null && fieldValueEntry.getKey().getForFinalClassification() == true) {
finalMetricColor = fieldValueEntry.getValue().getValue(); // HERE IS A PROBLEM. Returns null always.
}
}
}
metricColor.put(2, finalMetricColor);
metricsColors.put(rowEntry.getKey().getId(), metricColor);
}
为澄清起见,我在此地图中有 3 种类型的对象:Affiliate、Field 和 ApValue。都实现了 equals 和 hashCode 方法。
问题在于调用此行:
finalMetricColor = fieldValueEntry.getValue().getValue();
它总是返回 null 但之前使用的几行相同的调用工作正常,为什么?