在HashMap中保留插入顺序&教程样本

时间:2014-09-21 08:42:47

标签: java hashmap

根据这个问题:How to preserve insertion order in HashMap?

  

HashMap不保证地图的顺序;特别是,   它不保证订单会随着时间的推移保持不变。

但后来我对oracle教程有疑问

public void updateCoffeeSales(HashMap<String, Integer> salesForWeek)
    throws SQLException {
    ...
    try {
        ...
        for (Map.Entry<String, Integer> e : salesForWeek.entrySet()) {
            updateSales.setInt(1, e.getValue().intValue());
            updateSales.setString(2, e.getKey());
            updateSales.executeUpdate();
            updateTotal.setInt(1, e.getValue().intValue());
            updateTotal.setString(2, e.getKey());
            updateTotal.executeUpdate();
            con.commit();
        }
    } catch (SQLException e ) {
        ...
    } finally {
       ...
    }

来自这里:http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html

他们如何知道updateSales&amp;的值? updateTotal不会混合?

1 个答案:

答案 0 :(得分:1)

文档讨论了键值对的相对顺序。如果您添加项目

 a:b
 c:d
 e:f

到哈希映射,你可以在迭代时以任意顺序获取它们。例如,你可以得到

 c:d
 a:b
 e:f

然而,这种重新排序无法分解对。换句话说,a将保持与b配对 - 它不会重新排序以对应df

当您遍历地图entrySet()时,会得到无序的对列表。但是,对本身保持配对:如果为给定键设置了某个值,则无论迭代次序如何,它都将作为一对键返回。由于不应该依赖数据库表中项的自然顺序,因此特定的插入顺序没有区别。