黑马程序员技术交流社区

标题: 碰到的一道java集合框架的小问题,求解! [打印本页]

作者: 张善颖    时间: 2013-3-15 21:12
标题: 碰到的一道java集合框架的小问题,求解!
本帖最后由 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:}
作者: 范天成    时间: 2013-3-15 21:32
你没有覆写String类中的哈希码和比较方法,所以Set集合使用的是默认的自然顺序。
作者: 范天成    时间: 2013-3-15 21:32
你没有覆写String类中的哈希码和比较方法,所以Set集合使用的是默认的自然顺序。
作者: 陈腾跃_2013    时间: 2013-3-15 21:40
有代码是最好了,运行了下,结果是:
Key:
3
2
1
Values:
VC++
VB
java
3:VC++
2:VB
1:java

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

作者: 陈丽莉    时间: 2013-3-16 01:08
若还有问题,继续追问;没有的话,请将帖子分类改成【已解决】~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2