为什么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次结果一样? --------------------编程问答--------------------
你为什么认为应该不一样? --------------------编程问答-------------------- 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