A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 ZSY555 于 2013-3-16 01:20 编辑
  1. import java.util.Map;
  2. import java.util.HashMap;
  3. import java.util.Set;
  4. import java.util.Collection;
  5. import java.util.Iterator;
  6. class aaa{
  7. public static void main(String args[]){
  8.   HashMap aa=new HashMap();
  9.   aa.put("1","java");
  10.   aa.put("2","VB");
  11.   aa.put("3","VC++");
  12.                 //取出K和V的collection
  13.   Set k1=aa.keySet();
  14.   System.out.println("Key:");
  15.   Iterator aaaa=k1.iterator();
  16.   while(aaaa.hasNext()){
  17.    System.out.println(aaaa.next());
  18.   }
  19.   //取出与V相对应的K
  20.   Collection v=aa.values();
  21.   System.out.println("Values:");
  22.   Iterator bbbb=v.iterator();
  23.   while(bbbb.hasNext()){
  24.    System.out.println(bbbb.next());
  25.   }
  26.   //一一对应
  27.   Set k3=aa.entrySet();
  28.   Iterator cccc=k3.iterator();
  29.   while(cccc.hasNext()){
  30.    Map.Entry mp=(Map.Entry)cccc.next();
  31.    System.out.println(mp.getKey()+":"+mp.getValue());
  32.   }
  33. }
  34. }
  35. 上述代码打印出的结果为什么Key的顺序是3 2 1而不是1 2 ?求详细的解答一下
复制代码
{:soso_e149:}

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

4 个回复

倒序浏览
你没有覆写String类中的哈希码和比较方法,所以Set集合使用的是默认的自然顺序。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
你没有覆写String类中的哈希码和比较方法,所以Set集合使用的是默认的自然顺序。
回复 使用道具 举报
有代码是最好了,运行了下,结果是:
Key:
3
2
1
Values:
VC++
VB
java
3:VC++
2:VB
1:java

HashMap是无序的
如果改成
TreeMap<String, String> aa=new TreeMap<String, String>();
就会是123的输出

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
若还有问题,继续追问;没有的话,请将帖子分类改成【已解决】~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马