淘先锋技术网

首页 1 2 3 4 5 6 7
/*
每一个学生都有对应的归属地。
学生Studetn 地址String
学生属性:姓名,年龄。
注意:姓名和年龄相同的视为同一个学生。
保证学生的唯一性。

思路:
1.描述学生。
2.定义map容器。将学生作为键,地址作为值。存入。
3.获取map集合中的元素。

*/

import java.util.*;
class Student implements Comparable<Student>
{
	private String name;
	private int age;
	Student(String name,int age)
	{
		this.name=name;
		this.age=age;
	}
//-------当不确定要存入到哪种集合中,一般都要把这三个方法都写进去。compareTo是二叉树数据结构,hashCode和equals是哈希表数据结构。
	public int compareTo(Student stu)
	{
		int num = new Integer(this.age).compareTo(new Integer(stu.age));
		if(num==0)
		{
			return this.name.compareTo(stu.name);
		}
		return num;
	}
	public int hashCode()
	{
		return name.hashCode()+age;
	}
	public boolean equals(Object obj)
	{
		if(!(obj instanceof Student))
			throw new ClassCastException("不是学生类");
		Student s = (Student)obj;
		return this.getName().equals(s.getName()) && this.age==s.getAge();
	}
//----------------------------

	public String getName()
	{
		return name;
	}
	public int getAge()
	{
		return age;
	}
}
class MapTest 
{
	public static void sop(Object obj)
	{
		System.out.println(obj);
	}
	public static void main(String[] args) 
	{
		Map<Student,String> map = new HashMap<Student,String>();
		map.put(new Student("lisi01",21),"beijing");
		map.put(new Student("lisi04",24),"nanjing");
		map.put(new Student("lisi03",23),"wuhan");
		map.put(new Student("lisi02",22),"hunan");

		//第一种取出方式keySet
		Set<Student> key = map.keySet();
		Iterator<Student> it = key.iterator();
		while(it.hasNext())
		{
			Student s = it.next();
			String value = map.get(s);
			sop("键:"+s.getName()+","+s.getAge()+"...值:"+value);
		}

		
		//第二种取出方式entrySet
		Set<Map.Entry<Student,String>> keyRelation = map.entrySet();
		Iterator<Map.Entry<Student,String>> itentrySet = keyRelation.iterator();
		while(itentrySet.hasNext())
		{
			Map.Entry<Student,String> keyValue = itentrySet.next();
			Student s = keyValue.getKey();
			String v = keyValue.getValue();
			sop("键:"+s.getName()+":"+s.getAge()+"		值:"+v);
		}
	}
}