hashmap 是无序的但是实际输出有序。

以下代码,我运行的时候会输出但是我创建的顺序是张三王一李四明显程序帮我排序了,但是hashmap是无序的,treemap才是有序的,为什么这里hashmap也输出有序呢?... 以下代码,我运行的时候
会输出
但是我创建的顺序是张三王一李四
明显程序帮我排序了,但是hashmap是无序的,treemap才是有序的,为什么这里hashmap也输出有序呢?
是哪段代码实现了排序?
谢谢了
*************************
map里面的元素为:
001 张三
003 王一
005 李四
************************

****************************
package Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class testemp {
public static void main(String[] args) {
Map m = new HashMap();
Emp emp1 = new Emp("001","张三");
Emp emp2 = new Emp("005","李四");
Emp emp3 = new Emp("003","王一");
m.put(emp1.getid(),emp1.getname());
m.put(emp2.getid(),emp2.getname());
m.put(emp3.getid(),emp3.getname());
Set s = m.keySet();
Iterator it = s.iterator();
System.out.println("map里面的元素为:");
while(it.hasNext()){
String a = (String)(it.next());
String b = (String)(m.get(a));
System.out.println(a+" "+b);
}

}
}
*********************************
展开
 我来答
兰芬馥dC
推荐于2018-03-12
知道答主
回答量:1
采纳率:0%
帮助的人:923
展开全部
HashMap的无序是指不会记录插入的顺序,也不会根据特定规则进行排序;
但是HashMap存值的时候会根据key的hashCode()来计算存储的位置(位置是散列的,所以说其无序);
你使用的key是String类型,String重写的hashCode()计算出的位置,遍历的时候恰好是"001","003","005"的顺序;
PS:你可以打印一下"001","003","005"的hashCode()再对16求个余数,然后再往里面加一个"011"和"012"再打印一下;
man0306
2015-08-01 · TA获得超过958个赞
知道小有建树答主
回答量:707
采纳率:33%
帮助的人:398万
展开全部
Iterator it = s.iterator();
返回在此 set 中的元素上进行迭代的迭代器。返回的元素没有特定的顺序(除非此 set 是某个提供顺序保证的类的实例)。
追问
那为什么结果会有序
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式