您的位置:首页 > 职场人生

集合的补充(Map)

2016-07-09 14:42 323 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息