Java不是曾经有过一个Fair类吗?Map.Entry
2022-08-31 08:38:50
我是否记错了,或者Java曾经提供过一个Fair类作为其API的一部分?
标准框架中没有 Pair,但是非常接近“标准”的Apache Commons Lang有一个Fair。
new MutablePair<>(1, "xxx");
new ImmutablePair<>(1, "xxx");
Map.Entry
Java 1.6 及更高版本有两个 Map.Entry
接口实现,将键与值配对:
例如
Map.Entry < Month, Boolean > pair =
new AbstractMap.SimpleImmutableEntry <>(
Month.AUGUST ,
Boolean.TRUE
)
;
pair.toString(): AUGUST=true
我在需要存储对(如大小和对象集合)时使用它。
这部分来自我的生产代码:
public Map<L1Risk, Map.Entry<int[], Map<L2Risk, Map.Entry<int[], Map<L3Risk, List<Event>>>>>>
getEventTable(RiskClassifier classifier) {
Map<L1Risk, Map.Entry<int[], Map<L2Risk, Map.Entry<int[], Map<L3Risk, List<Event>>>>>> l1s = new HashMap<>();
Map<L2Risk, Map.Entry<int[], Map<L3Risk, List<Event>>>> l2s = new HashMap<>();
Map<L3Risk, List<Event>> l3s = new HashMap<>();
List<Event> events = new ArrayList<>();
...
map.put(l3s, events);
map.put(l2s, new AbstractMap.SimpleImmutableEntry<>(l3Size, l3s));
map.put(l1s, new AbstractMap.SimpleImmutableEntry<>(l2Size, l2s));
}
代码看起来很复杂,但不是Map.Entry,你被限制为对象数组(大小为2)并丢失类型检查...