Java:聲明學(xué)生類和HashMap,使用HashMap存儲(chǔ)學(xué)生類,使用2種遍歷方式遍歷出學(xué)生信息







聲明學(xué)生類和HashMap,使用HashMap存儲(chǔ)學(xué)生類,使用2種遍歷方式遍歷出學(xué)生信息
/*
?每一個(gè)學(xué)生都有對(duì)應(yīng)歸屬地。
?學(xué)生Student 地址 String。
?學(xué)生屬性:姓名,年齡。
?注意:姓名和年齡相同的視為同一個(gè)學(xué)生。
?保證學(xué)生的唯一性。
?步驟:
?1、描述學(xué)生。
?2、定義map容器,將學(xué)生作為鍵,地址作為值,存入。
?3、獲取map集合中的元素。
?*/
package a;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class lizi {
public static void main(String[] args) {
HashMap<class_Student, String> HSduixiang = new HashMap<class_Student, String>();
HSduixiang.put(new class_Student("張三", 22), "北京");
HSduixiang.put(new class_Student("李四", 25), "上海");
HSduixiang.put(new class_Student("王五", 24), "香港");
HSduixiang.put(new class_Student("小張", 24), "煙臺(tái)");
HSduixiang.put(new class_Student("小李", 26), "濟(jì)南");
System.out.println("第一種取出方式 ketSet:");
Set<class_Student> keySet = HSduixiang.keySet();
Iterator<class_Student> tiquchudeKey1 = keySet.iterator();
while (tiquchudeKey1.hasNext()) {
class_Student Student_name_age1 = tiquchudeKey1.next();
String addr = HSduixiang.get(Student_name_age1);
System.out.println(Student_name_age1 + "---" + addr);
}
System.out
.println("HSduixiang.get(Student_name_age)中的Student_name_age這里充當(dāng)了Key,\n"
+ "就像引索,用關(guān)鍵詞搜索出要相關(guān)的內(nèi)容一樣,這里的相關(guān)內(nèi)容是地址addr");
System.out.println();
System.out.println("第二種取出方式entrySet:");
Set<Map.Entry<class_Student, String>> entrySet = HSduixiang.entrySet();
Iterator<Map.Entry<class_Student, String>> tiquchudeKey2 = entrySet.iterator();
while (tiquchudeKey2.hasNext()) {
Map.Entry<class_Student, String> yongMEdedaodeshujv = tiquchudeKey2.next();
class_Student Student_name_age2 = yongMEdedaodeshujv.getKey();
String addr = yongMEdedaodeshujv.getValue();
System.out.println(Student_name_age2 + "=====" + addr);
}
}
}
class class_Student implements Comparable<class_Student> {
private int age;
private String name;
class_Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public int compareTo(class_Student s) {
// TODO 自動(dòng)生成的方法存根:
int num = new Integer(this.age).compareTo(new Integer(s.age));
if (num == 0)
return this.name.compareTo(s.name);
return num;
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof class_Student))
throw new ClassCastException("類型不匹配");
class_Student s = (class_Student) obj;
return this.name.equals(s.name) && this.age == age;
}
public int getAge() {
return age;
}
public String getName() {
return name;
}
// 保證鍵的唯一性:
@Override
public int hashCode() {
return name.hashCode() + age * 34;
}
@Override
public String toString() {
return name + ":" + age;
}
}





