关于java:在HashMap和教程示例中保留插入顺序

Preserving inserting order in HashMap & tutorial sample

根据这个问题:如何在HashMap中保留插入顺序?

HashMap makes no guarantees as to the order of the map; in particular,
it does not guarantee that the order will remain constant over time.

但后来我对oracle教程有疑问

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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
2
3
 a:b
 c:d
 e:f

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

1
2
3
 c:d
 a:b
 e:f

但是,这种重新排序无法打破对。 换句话说,a将保持与b配对 - 它不会被重新排序以对应于df

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