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