当前位置:编程学习 > JAVA >>

为什么2次结果一样?

import java.util.*;
public class TreeMap实例 {
private int id;
private String name;
public TreeMap实例(int id,String name){
this.id=id;
this.name = name;
}
public void setId(int id){
this.id=id;
}
public void setName(String name){
this.name=name;
}
public int getId(){
return id;
}
public String getName(){
return this.name;
}
public static void main(String[] args) {
Map<Integer,String> map=new HashMap();
TreeMap实例 t=new TreeMap实例(5,"a");
TreeMap实例 t1=new TreeMap实例(4,"b");
TreeMap实例 t2=new TreeMap实例(6,"c");
TreeMap实例 t3=new TreeMap实例(7,"d");
TreeMap实例 t4=new TreeMap实例(9,"e");
map.put(t.getId(), t.getName());
map.put(t1.getId(), t1.getName());
map.put(t2.getId(), t2.getName());
map.put(t3.getId(), t3.getName());
map.put(t4.getId(), t4.getName());
Set<Integer> set=map.keySet();
Iterator<Integer> it=set.iterator();
System.out.println("HashMap");
while(it.hasNext()){
Integer key=it.next();
String value=map.get(key);
System.out.println(key+":"+value);
}
Map<Integer,String> treemap=new TreeMap();
treemap.putAll(map);
Set<Integer> set1=treemap.keySet();
Iterator<Integer> it1=set1.iterator();
System.out.println("TreeMap");
while(it1.hasNext()){
Integer key=it1.next();
String value=treemap.get(key);
System.out.println(key+":"+value);
}
System.out.println("为什么2次结果一样?");

}

}
为什么2次结果一样? --------------------编程问答--------------------
引用 楼主 u012637712 的回复:
System.out.println("为什么2次结果一样?");

你为什么认为应该不一样? --------------------编程问答-------------------- Set<Integer> set=map.keySet();
这个会自动按key的hashCode排序,而Integer的hashCode正好就是它的值
TreeMap按Comparator中compare方法排序,对于Integer,当然也是按值排序 --------------------编程问答-------------------- 为什么要不一样? --------------------编程问答--------------------
引用 2 楼 waynexuan 的回复:
Set<Integer> set=map.keySet();
这个会自动按key的hashCode排序,而Integer的hashCode正好就是它的值
TreeMap按Comparator中compare方法排序,对于Integer,当然也是按值排序

插入的类型如果是<String,String>
eg:
"11","a"
"1","b"
"10","c"
结果可能就不同了。 --------------------编程问答-------------------- 为什么要不一样? --------------------编程问答-------------------- 为什么要不一样? --------------------编程问答-------------------- 什么要不一样?  --------------------编程问答-------------------- 又学习了~~ --------------------编程问答--------------------
为什么不一样?
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,