HashMap和LinkedHashMap

 HashMap集合

HashMap存取没有顺序

HashMap存储自定义类型键值

实例

l  学生类

publicclass Student {

     private String name;

     privateintage;

 

     //编写构造方法,文档中已省略

     //编写get,set方法,文档中已省略

     //编写toString方法,文档中已省略

}

l  测试类

publicclass HashMapTest {

     publicstaticvoid main(String[] args) {

         //1,创建hashmap集合对象。

         Map<Student,String>map = new HashMap<Student,String>();

        

         //2,添加元素。

         map.put(new Student("lisi",28), "上海");

         map.put(new Student("wangwu",22), "北京");

         map.put(new Student("zhaoliu",24), "成都");

         map.put(new Student("zhouqi",25), "广州");

         map.put(new Student("wangwu",22), "南京");

        

         //3,取出元素。键找值方式

         Set<Student>keySet = map.keySet();

         for(Student key : keySet){

              String value = map.get(key);

              System.out.println(key.toString()+"....."+value);

         }

        

         //取出元素。键值对方式

         Set<Map.Entry<Student, String>>entrySet = map.entrySet();

         for (Map.Entry<Student, String>entry : entrySet) {

              Student key = entry.getKey();

              String value = entry.getValue();

              System.out.println(key.toString()+"....."+value);

         }

     }

}

l  当给HashMap中存放自定义对象时,如果自定义对象作为key存在,这时要保证对象唯一,必须复写对象的hashCode和equals方法(如果忘记,请回顾HashSet存放自定义对象)。

l  如果要保证map中存放的key和取出的顺序一致,可以使用LinkedHashMap集合来存放。

 

 

LingkedHashMap集合

LingkesHashMap存储取出有序

LinkedHashMap<person, String> map = new LinkedHashMap<person, String>();
person p1 = new person("张三", 18);
person p2 = new person("张si", 20);
person p3 = new person("张三", 18);
map.put(p1, "一般");
map.put(p2, "二般");
map.put(p3, "三般");
Set<person> set=map.keySet();
for(person s:set){
System.out.println(s+"...."+map.get(s));
}
}

 

上一篇:LinkedHashMap源码剖析


下一篇:HashMap和LinkedHashMap的区别