集合的補充(Map)

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





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章