import java.util.Set;
import java.util.HashMap;
import java.util.Collection;
import java.util.Iterator;public class TestHashMap{
public static void main(String[] args) {
HashMap hm = new HashMap();
hm.put(new Integer(1003),new Person(1003,"张三",15));
hm.put(new Integer(1008),new Person(1008,"李四",25));
hm.put(1015,new Person(1015,"王五",73));   //自动封装
hm.put(1001,new Person(1001,"赵六",49)); System.out.println("----检索单个元素----");
Person p = (Person)hm.get(1008);
System.out.println(p);

System.out.println("----遍历所有\"键\"(元素名)----");
Set names = hm.keySet();
for(Object o : names){
System.out.println(o);
}

System.out.println("----遍历所有\"值\"(元素值)----");
Collection values = hm.values();
for(Object o : values){
System.out.println(o);
}
}
}
  class Person{
private final int id;
private String name;
private int age;

public Person(int id,String name,int age){
this.id = id;
this.name = name;
this.age = age;
}
public String toString(){
return "Id: " + id + "\tName: " + name + "\tAge: " + age; 
}
}
输出结果如下:
----检索单个元素----
Id: 1008 Name: 李四 Age: 25
----遍历所有"键"(元素名)----
1001
1003
1008
1015
----遍历所有"值"(元素值)----
Id: 1001 Name: 赵六 Age: 49
Id: 1003 Name: 张三 Age: 15
Id: 1008 Name: 李四 Age: 25
Id: 1015 Name: 王五 Age: 73
疑问:hashMap不保证先后顺序,为什么ID号以能升序顺序输出???
请牛人赐教,谢谢...

解决方案 »

  1.   

    可能说:巧了!呵呵。 
    这涉及到HashCode()。不用深究,反正你不要指望HashMap中的数据会按Key有序就行了。
      

  2.   

    基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 多运行几遍看看
      

  3.   

    hashmap不能保证key是有序的,它只是不保证,偶尔也会输出有序的key来;
    多往map里面加些数据,你再试试看。
      

  4.   

    hashmap是不保证是按顺序存放的,但是并不说明一定是无序的,也就是说,当数据很少,或者有的时候它随机排列可能正好是你存放的顺序。你在里面多加一些数据,多运行几次应该就能看出来了