将学生对象和学生的归属地通过键与值存储到map集合中。
-
import java.util.HashMap;
-
import java.util.Iterator;
-
import java.util.Set;
-
-
-
class Student {
-
String name;
-
int age;
-
-
public Student(String name,int age){
-
super();
-
this.name=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
class HashMapDemo{
-
public static void main(String[] args){
-
HashMap
hm=
new HashMap();
-
-
hm.put(
new Student(
“lisi”,
38),
“北京”);
-
hm.put(
new Student(
“zhaosi”,
34),
“上海”);
-
hm.put(
new Student(
“xiaoqiang”,
31),
“沈阳”);
-
hm.put(
new Student(
“wangcai”,
28),
“大连”);
-
hm.put(
new Student(
“zhaosi”,
34),
“铁岭”);
-
-
Set
keySet=hm.keySet();
-
-
Iterator
it=keySet.iterator();
-
-
while(it.hasNext()){
-
Student key=it.next();
-
String value=hm.get(key);
-
System.out.println(key.getName()+
“:”+key.getAge()+
“…”+value);
-
}
-
}
-
-
}
运行结果:
当键一样时,其值并没有被覆盖,所以要判断键是否相同,HashMap需要定义hashCode和equals方法,在Student类中要复写方法:
-
import java.util.HashMap;
-
import java.util.Iterator;
-
import java.util.Set;
-
-
-
class Student {
-
String name;
-
int age;
-
-
public Student(String name,int age){
-
super();
-
this.name=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 int hashCode(){
//复写hashCode()
-
return name.hashCode()+age;
-
}
-
-
public boolean equals(Object obj){
//复写equals
-
-
if(
this==obj)
return
true;
-
-
if(!(obj
instanceof Student))
throw
new ClassCastException(
"类型错误");
//输入类型错误
-
-
Student p = (Student)obj;
//强制转换
-
return
this.name.equals(p.name) &&
this.age==p.age;
//说明姓名和年龄相同则为同一元素
-
}
-
-
}
-
public
class HashMapDemo{
-
public static void main(String[] args){
-
HashMap
hm=
new HashMap();
-
-
hm.put(
new Student(
"lisi",
38),
"北京");
-
hm.put(
new Student(
"zhaosi",
34),
"上海");
-
hm.put(
new Student(
"xiaoqiang",
31),
"沈阳");
-
hm.put(
new Student(
"wangcai",
28),
"大连");
-
hm.put(
new Student(
"zhaosi",
34),
"铁岭");
-
-
Set
keySet=hm.keySet();
-
Iterator
it=keySet.iterator();
-
-
//以下被注释的代码可以替换上面两句:
-
//Iterator
it=hm.keySet().iterator();
-
-
while(it.hasNext()){
-
Student key=it.next();
-
String value=hm.get(key);
-
System.out.println(key.getName()+
":"+key.getAge()+
"..."+value);
-
}
-
}
-
-
}
运行结果: