黑马程序员技术交流社区
标题:
碰到的一道java集合框架的小问题,求解!
[打印本页]
作者:
张善颖
时间:
2013-3-15 21:12
标题:
碰到的一道java集合框架的小问题,求解!
本帖最后由 ZSY555 于 2013-3-16 01:20 编辑
import java.util.Map;
import java.util.HashMap;
import java.util.Set;
import java.util.Collection;
import java.util.Iterator;
class aaa{
public static void main(String args[]){
HashMap aa=new HashMap();
aa.put("1","java");
aa.put("2","VB");
aa.put("3","VC++");
//取出K和V的collection
Set k1=aa.keySet();
System.out.println("Key:");
Iterator aaaa=k1.iterator();
while(aaaa.hasNext()){
System.out.println(aaaa.next());
}
//取出与V相对应的K
Collection v=aa.values();
System.out.println("Values:");
Iterator bbbb=v.iterator();
while(bbbb.hasNext()){
System.out.println(bbbb.next());
}
//一一对应
Set k3=aa.entrySet();
Iterator cccc=k3.iterator();
while(cccc.hasNext()){
Map.Entry mp=(Map.Entry)cccc.next();
System.out.println(mp.getKey()+":"+mp.getValue());
}
}
}
上述代码打印出的结果为什么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