JAVA-HashMap的应用例子

来源:互联网 发布:mac 迅雷怎么断点下载 编辑:程序博客网 时间:2024/04/30 23:26

import java.util.*;
class HashMapDemo2
{
 public static void main(String[] args)
 {
  HashMap<Student,String> hm = new HashMap<Student,String>();
  
  hm.put(new Student("张三", 20),"北京");
  hm.put(new Student("李四", 21),"西安");
  hm.put(new Student("王五", 15),"重庆");
  hm.put(new Student("赵六", 26),"成都");
  hm.put(new Student("小七", 12),"绵阳");
  hm.put(new Student("小七", 12),"绵阳"); //未覆盖hashCode方法和equals方法时,能够存入相同的元素.
  
  Set<Map.Entry<Student,String>> s = hm.entrySet();
  for(Iterator<Map.Entry<Student,String>> it = s.iterator();it.hasNext(); )
  {
   Map.Entry<Student,String> me = it.next();
   Student stu =me.getKey();
   String addr =me.getValue();
   System.out.println(stu.getName()+ ".." + stu.getAge() + ".." + addr);
   
 }
}

class Student
{
 private String name;
 private int age;
 Student(String name, int age)
 {
  this.name = name;
  this.age  =age;
 }

 public String getName()
 {
  return name;
 }
 public int getAge()
 {
  return age;
 }

 public int hashCode() //注意,判断HashSet、HashMap集合的唯一性,覆盖hashCode和equals方法,而TreeMap、TreeMap排序实现comparable或comparator接口.
 {
  return name.hashCode() +age*29;
 }

 public boolean equals(Object obj)
 {
  if (!(obj instanceofStudent))
   returnfalse;
  Student student =(Student)obj;
  returnthis.name.equals(student.name) &&this.age == student.age;  
 }

 public String toString()
 {
  return name + ".." + age;
 }
}

原创粉丝点击