集合的补充(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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值