Map與Set很類似,Set的底層是用Map實現的,常用的實現類有兩個:HashMap和TreeMap,HashMap中元素的key值不能重複,即彼此調用equals方法,返回爲false,排列順序是不固定的,創建Map需要指定兩個類型,一個key,一個value,TreeMap不僅能保證key值唯一,而且可以根據key值取排序,用法與我的上一篇中Set是一樣的。
下面是用HashMap進行數據的存入以及使用兩種不同的方式輸出:
測試類:
package com.jun.map;
import java.security.KeyStore.Entry;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class HashAndTreeTest {
public static void main(String[] args) {
Person person1=new Person("1","張1","男");
Person person2=new Person("2","張2","男");
Person person3=new Person("3","張3","男");
Person person4=new Person("3","張4","男");
PassPort passport1=new PassPort("usa");
PassPort passport2=new PassPort("china");
System.out.println("用增強for循環的方式輸出");
//HashMap
Map<Person, PassPort> map=new HashMap<Person, PassPort>();
map.put(person1, passport2);
map.put(person2, passport1);
map.put(person3, passport1);
map.put(person4, passport1);
Set<Person> set=map.keySet();
for(Person p:set){
System.out.println(" name="+p.getName()+" id="+p.getId()+" passportname="+map.get(p).getPassportName());
}
System.out.println("用迭代的方式輸出");
Set<Map.Entry<Person,PassPort>> sets=map.entrySet();
Iterator<java.util.Map.Entry<Person, PassPort>> itor=sets.iterator();
while(itor.hasNext()){
System.out.println(itor.next().getKey().getName()+"=="+itor.next().getValue().getPassportName());
}
}
}
Person.java
package com.jun.map;
public class Person {
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
private String name;
private String age;
public Person(String id,String name,String age){
this.id=id;
this.name=name;
this.age=age;
}
}
PassPort.java
package com.jun.map;
public class PassPort {
private String passportName;
public String getPassportName() {
return passportName;
}
public void setPassportName(String passportName) {
this.passportName = passportName;
}
public PassPort(String name){
this.passportName=name;
}
}
執行結果
用增強for循環的方式輸出
name=張1 id=1 passportname=china
name=張2 id=2 passportname=usa
name=張4 id=3 passportname=usa
name=張3 id=3 passportname=usa
用迭代的方式輸出
張1==usa
張4==usa