学生属性:姓名,年龄
注意:姓名和年龄相同的学生视为一个学生。
保证学会说呢过的唯一性。
1、描述学生
2、定义map容器,将学生作为键,地址作为值存入
注意:姓名和年龄相同的学生视为一个学生。
保证学会说呢过的唯一性。
1、描述学生
2、定义map容器,将学生作为键,地址作为值存入
3、获取map集合中的元素
代码:
import java.util.*;
public class code
{
public static void main(String[] args) {
HashMap<Student,String> hm = new HashMap<Student,String>();
hm.put(new Student("张三",21), "上海");
hm.put(new Student("张三",21), "天津");
hm.put(new Student("李四",22), "北京");
hm.put(new Student("王五",23), "广州");
hm.put(new Student("认真",24), "深圳");
//第一种取出方式:keySet
Set<Student> keySet = hm.keySet();
Iterator<Student> it1 = keySet.iterator();
while(it1.hasNext()) {
Student stu = it1.next();
String add = hm.get(stu);
System.out.println(stu+"--"+add);
}
System.out.println();
//第二种取出方式:entrySet
Set<Map.Entry<Student, String>> entrySet = hm.entrySet();
Iterator<Map.Entry<Student, String>> it2 = entrySet.iterator();
while(it2.hasNext()) {
Map.Entry<Student, String> me = it2.next();
Student stu =me.getKey();
String add = me.getValue();
System.out.println(stu+".."+add);
}
}
}
class Student implements Comparable<Student>
{
private String name;
private int age;
Student(String name,int age){
this.name = name;
this.age = age;
}
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 hashCode()
{
return name.hashCode()+age*23;
}
public boolean equals(Object obj)
{
if(!(obj instanceof Student))
throw new ClassCastException("类型不匹配");
Student s = (Student)obj;
return this.name.equals(s.name) && this.age == age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString() {
return name+"--"+age;
}
}