2016-08-16 39 views
0

我正在升级依赖于HashMap的Java 7迭代顺序的应​​用程序。 Java 8 HashMap改变了它的迭代顺序,这与这个应用程序的一些不兼容(可能是不好的设计),我不得不使用Java 7 HashMaps将应用程序成功迁移到Java 8.这就是我认为的做法:如何在Java 8中使用Java 7 HashMaps?

  1. 使扩展了常规的Java 8 HashMap的
  2. 查找了Java 7的HashMap的源代码,复制和粘贴的Java7HashMap。
  3. 替换“import java.util.HashMap;”用“import(...)。Java7HashMap;”
  4. 彻底测试一切。

这会是一个很好的做法吗?不幸的是,不能重写依赖于Java 7版本HashMap的部分。

+14

HashMap没有排序,那么您是指“依赖Java 7对HashMap进行排序”的含义? – Eran

+3

基本上所有较新版本的Java都向后兼容旧版本,我感觉一旦迁移到Java 8,就不应该面对Java 7代码的任何问题。 –

+1

@Simze除非你依赖未公开的和实现细节,就像在这种情况下(这是HashMap在Java 7中内部的行为方式)。 – Tunaki

回答

1

是的,你的方法很好。虽然每个人似乎都有不适的感觉。但是你想拥有唯一实现变化:

Map<Lorem, Ipso> goodMap = new HashMap<>(); 
HashMap<Foo, Bar> badMap = new HashMap<>(); 

因此,只有new HashMapnew Java7HashMap找到所有的不称职,并允许以后整合替换,比方说用可比更好键。

你可能只需要到Java 8 implement Map,实际上我不会关心失踪的Java 8的支持,因为它会被工作,因为它没有和进一步发展应该换货Java7HashMap的。更好地投入时间进行重写。 胡萝卜和坚果的方法。

8

问题不在HashMap,问题是谁使用HashMap错误的代码! HashMap不给订单提供照片。

纠正使用HashMap错误的代码!这使代码与JDK的更高版本兼容。

+0

我在这里撒谎。有可能,我在这里无法详细讨论,但需要构建一个脚本并在24个月内运行超过2个月,以使所有历史数据与Java 8实现兼容。我想到了这种方式,并认为这是一个可能的解决方案。 – Gamer1120