我怀疑。如果我使用两个HashMap,则以相同的顺序存储相同的内容。我可以确认地说HashMap都以相同的顺序存储了数据。
答案 0 :(得分:2)
如果两个HashMap
实例都使用相同的值(大小,加载工厂)进行实例化,然后使用相同的顺序插入带有键的值,则条目的迭代顺序将相同。
但真正的问题是它为什么重要?虽然我们可以说它们将处于相同的顺序,但我们不能说这个顺序是什么。如果订单很重要,您需要查看SortedMap(按比较器排序)或LinkedHashMap(按插入顺序排序)。
答案 1 :(得分:1)
答案 2 :(得分:1)
我认为这比真正的单词问题更具理论性问题。如果你要依赖于Map
中元素的顺序,你应该使用实例来保证它的顺序,就像LinkedHashMap
使用放置元素的顺序一样。无论如何这里是我的答案:
我会说是的。如果您向算法提供所有完全相同的数据(在本例中为排序算法)两次,并且算法仅基于此数据,则应获得完全相同的结果。
HashMas仅使用一种算法对其元素进行排序。它们的顺序对您来说并不自然(此地图不会按照您定义的属性对对象进行排序),因为它将取决于您作为键传递的对象hashcode
的结果。
因此,如果您将完全相同的对象传递给两个地图(相同类,状态和身份的实例),您应该获得与相同的订单这些对象保证正确实现了hashcode(和equals)方法。如果哈希码的结果依赖于时间(这是哈希码方法的错误实现),这种哈希码就不会得到相同的顺序。将会中断HashMap
(它将无法正确找到其元素)。
答案 3 :(得分:0)
你无法对引擎下的算法做出假设,所以没有。此外,您不能依赖于基础算法随时间保持不变。如果您需要相同的订单,您必须明确地这样做。例如,使用TreeMap并创建适当的键或排序方法,而不是HashMap。