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));
}
}