循环遍历LinkedHashMap中的keySet()与使用迭代器完全相同

时间:2016-08-04 17:44:42

标签: java java-7

以下代码是否保证按插入顺序打印密钥:

async.forEachOf(listObj.result, function (result, i, callback) {
    varBody.index = i;
    varBody.memberID = result.program_member.id;
    request(
        ...
    , function () {
        // Do more Stuff
        // The next iteration WON'T START until callback is called
        callback();
    });
}, function () {
    // We're done looping in this function!
});

总是打印A,C然后B吗?或者我是否需要使用迭代器来保证我按插入顺序访问集合?

我感到困惑的原因是,根据文档,LinkedHashMap<String, String> m = new LinkedHashedMap<String,String>(); m.put("A", "Test 1"); m.put("C", "Test 2"); m.put("B", "Test 3"); for (String key : m.keySet()) { System.out.println(key); } 会返回keySet(),并且在迭代Set时无法保证订单。此外,Set方法继承自keySet(),因此我想知道HashMap LinkedHashMap如何保证密钥在从keySet()继承时按插入顺序返回。

0 个答案:

没有答案