以下代码是否保证按插入顺序打印密钥:
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()
继承时按插入顺序返回。