Java-Map应用实例

/*
 * 每个学生都有对应的归属地。
 * 学生Student,地址String.
 * 学生属性:姓名,年龄。
 * 注意:姓名和年龄相同的视为同一个学生。
 * 保证学生的唯一性。
 *
 * 1.描述学生。
 * 2.定义map容器。将学生作为键,地址作为值,存入。
 * 3.获取map集合中的元素。
 */

class Student implements Comparable<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 compareTo(Student s) {
        int num = new Integer(this.age).compareTo(new Integer(s.age));
        
        if(num==0)
            return this.name.compareTo(s.name);
        return num;
    }
    public int getAge() {
        return age;
    }
    
    public String toString() {
        return name+":"+age;
    }
    
    public int hashCode() {
        
        return name.hashCode()+age*34;
    }
    
    public boolean equals(Object obj) {
        if (!(obj instanceof Student))
            throw new ClassCastException("类型不匹配!");
        
        Student s = (Student)obj;
        
        return this.name.equals(s.name)&&this.age==s.age;
    }
    
}

public class MapTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        HashMap<Student,String> hm = new HashMap<Student,String>();
        
        hm.put(new Student("lisa",21),"beijing");
        hm.put(new Student("lisb",22),"shanghai");
        hm.put(new Student("lisc",23),"shenzhen");
        hm.put(new Student("lisd",24),"guangzhou");
        
        //第一种取出方式
        Set<Student> keySet = hm.keySet();
        
        Iterator<Student> it = keySet.iterator();
        
        while(it.hasNext()) {
            Student stu = it.next();
            String addr = hm.get(stu);
            System.out.println(stu+"----"+addr);
        }
        
        //第二种取出方式
        Set<Map.Entry<Student, String>> entrySet = hm.entrySet();
        
        Iterator<Map.Entry<Student, String>> it1 = entrySet.iterator();
        
        while(it1.hasNext()) {
            Map.Entry<Student, String> me = it1.next();
            Student stu = me.getKey();
            String addr = me.getValue();
            System.out.println(stu+"===="+addr);
        }

    }

}

猜你喜欢

转载自blog.csdn.net/Lydia233/article/details/102655644