黑马程序员_java入门_集合Map


------- android培训java培训、期待与您交流! ----------

一.集合Map概述

Map集合和其他集合不同之处在于,它存的一对映射关系

java.util

接口Map<k,v>

k:是key键

v:是value是值

map接口的子类有-------Hashtable

                           --------HahsMap

                                                     ---------TreeMap

 

1.添加put(k,v),会返回键对应原来的值

putAll(Map<?extends k.?extends v> m)将所有映射关系复制到此映射中

 

 

2.删除

void clear()从此映射中删除所有映射关系

3.boolean containsKey(object key)如果此映射中包含指定键的映射关系,返回true

boolean containsValue(Object value)如果此映射将一个或多个键映射到指定的值。则返回true

boolean isEmpty()如果此映射未包含键--值映射关系,则返回true

 

4.获取

V  get(Object key)返回键的值,不存在返回null

int size() 获取关系对数

Collection<v> values()  返回此映射中包含的值的collection视图

Set<Map.Entry<k,v>> entrySet()  返回此映射中包含映射关系的Set视图

Set<k> keySet()  返回键的set视图

 

二.集合的特点

Hashtable------哈希表,不能存入null键和值 线程同步 jdk1.0

HashMap ------哈希表,可以存null,线程不同步,无序的

TreeMap------二叉树,线程不同步,可以给集合中的键进行排序,主要指的是取出有序,不是存储有序

 

Map集合和set集合很像,其实底层用了set集合

 

三Map集合的取出方法

1.Map---keySet

步骤一.将Map中所有的key存入到set集合中,用迭代器取出

步骤二.用get方法获取每个键对应的值

 

取出原理:将Map集合转成Set集合,再用迭代器取出

1.Set<String> KeySet=map.KeySet()//把所有的key取到set集合中

2.构造集合的迭代器

Iterator it=KeySet.iterator();

3.循环取出key,然后取出value

String key=it.next();

String value=map.get(key);

 

2.第二种取出方式Map---entrySet

将映射关系存入set集合中,数据类型是Map.entry

步骤一.存入set中映射关系

Set<Map.Entry<String,String>> entrySet=map.entrySet();

步骤二构造迭代器

Iterator<Map.Entry<String,String>> it=map.iterator();

步骤三循环取出

Map.Entry<String,String> me=it.next();

String key=me.getKey();

String value=me.getValue();

 

四Map集合的扩展

Map的扩展
class
{
	public static void main(String[] args)
	{
		HashMap<String,hashMap<String,String>> czbk=new HashMap<String,hashMap<String,String>>();
		HashMap<String,String> yure=new HashMap<String,String>();
		HashMap<String,String> jiuye=new HashMap<String,String>();

		czbk.put("yureban",yure);
		czbk.put("jiuyebanban",jiuye);
		jiuye.put("","");
		jiuye.put("","");

		yure.put(""."");
		yure.put(""."");
	Iterator<String> it=czbk.keySet().iterator();
		
		while(it.hasNext())
		{
			String roomName=it.next();
			HashMap<String,String> room=czbk.get(roomName);
			getStudentInfo(room);
		}
	
	}

	public stativ void getStudentInfo(HashMap<String,String> roomMap)
	{
		Set<String> keySet=roomMap.keySet();
		Iterator<String> it=keySet.iterator();
		while(it.hasNext())
		{
			String id=it.next();
			String name=roomMap.get(id);
			sop(id+name);
		}
	}


}
///////////////////////////////////////////////////////////////////////////////////
Map扩展2
class Student
{
	private String id;
	[rivate String name;
	Student(String id,String name)
	{
		this.id=id;
		this.name=name;
	}
	public String toString()
	{
		return id+name;
	}
	
}
class Demo
{
	public static void dm()
	{
		HashMap<String,List<Student>> czbk=new HashMap<String,List<Student>>()
		List<Student> yure=new Arraylist<Student>();
		List<Student> jiuye=new Arraylist<Student>();
		czbk.put("yureban",reyu);
		czbk.put("jiuyeban",jiuye);
		reyu.add(new Student("01","zhangsan"));
		reyu.add(new Student("01","zhangsan"))
		jiuye.add(new Student("01","zhangsan"))
		jiuye.add(new Student("01","zhangsan"));
		Iterator<String> it=czbk.keySet().iterator();
		
		while(it.hasNext())
		{
			String roomName=it.next();
			List<Student> room=czbk.get(roomName);
			getinfo(room);
		}
	

	}	
	public static void getinfo(List<Student> list)
	{
		Iterator<Student> it=list.iterator();
		while(it.hasNext())
		{
			Student s=it.next();
			sop(s);
		}
	}	


	public static void main(String[] args)
	{
		dm();
	}
}}

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值