记录安卓开发中遇到的坑

/ 0评 / 0

1.最近在搞一个双向校验问题,但一直发现使用的hashmap的顺序存在问题,导致校验一直失败,后上网查资料得

 for (Entry entry : hashMap.entrySet()) {    MessageFormat.format("{0}={1}",entry.getKey(),entry.getValue());}

   发现得到的元素不是按照之前加入HashMap的顺序输出的,这个问题我之前倒是没有注意过,后来上网查了一下原因,发现是:HashMap散列图、Hashtable散列表是按“有利于随机查找的散列(hash)的顺序”。        并非按输入顺序。遍历时只能全部输出,而没有顺序。甚至可以rehash()重新散列,来获得更利于随机存取的内部顺序。

  总之,遍历HashMap或Hashtable时不要求顺序输出,即与顺序无关。

Map paramMap = new HashMap();

可以用java.util.LinkedHashMap 就是按加入时的顺序遍历了。

Map paramMap = new LinkedHashMap ();

发表评论

电子邮件地址不会被公开。 必填项已用*标注