Java 不是曾经有过 Pair 类吗?

新手上路,请多包涵

是我记错了,还是 Java 曾几何时提供了一个 Pair 类作为其 API 的一部分?

原文由 Alexx 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 690
2 个回答

标准框架中没有 Pair ,但是非常接近“标准”的 Apache Commons Lang 有一个 Pair

 new MutablePair<>(1, "xxx");
new ImmutablePair<>(1, "xxx");

原文由 Josh Lee 发布,翻译遵循 CC BY-SA 4.0 许可协议

Map.Entry

Java 1.6 及更高版本有两个实现 Map.Entry 接口将键与值配对:

继承自 Map.Entry 接口的 SimpleEntry 和 SimpleImmutableEntry 类的 UML 图

例如

Map.Entry < Month, Boolean > pair =
    new AbstractMap.SimpleImmutableEntry <>(
        Month.AUGUST ,
        Boolean.TRUE
    )
;

pair.toString(): 八月=真

我在需要存储对(如大小和对象集合)时使用它。

这部分来自我的生产代码:

 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)并丢失了类型检查…

原文由 gavenkoa 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏