集合—Map

 

/*
Map集合:该集合存储键值对,一对一对往里存,要保证键的唯一性。
	1,添加。
		 put(K key, V value);
		 putAll(Map<? extends K, ? extends V> m);
		 
	2,删除。
		 clear();
		 remove(Object key);
		 
	3,判断
		 containsValue(Object value);
		 containsKey(Object key);
		 
	4,获取
		 get(Object key)
		 size();
		 values();
		 
		 entrySet();//重要
		 keySet();//重要
		 
Map
	|--Hashtable:底层是哈希表数据结构,不可以存入null,该集合是线程同步的。效率低
	|--HashMap:底层是哈希表数据结构,并允许使用null键和null值,该集合是线程不同步。效率高
	|--TreeMap:底层是二叉树数据结构,线程不同步。可以用于给map集合中的键排序
	
和Set很像。其实Set底层就是使用了Map集合。
*/
import java.util.*;
class MapDemo
{
	public static void main(String[] args)
	{
		Map<String,String> map = new HashMap<String,String>();
		
		//添加元素,添加元素,如果出现添加时,出现相同
		//的键。那么后添加的值会覆盖原有的值,并且put方
		//法会返回被覆盖的值
		map.put("01","zhangsan1");
		map.put("02","zhangsan2");
		map.put("03","zhangsan3");
		
		System.out.println("containsKey: "+map.containsKey("022"));
		//System.out.println("remove: "+map.remove("02"));
		
		System.out.println("get: "+map.get("02"));
		
		map.put("04",null);
		System.out.println("get: "+map.get("04"));
		//可以通过get方法的返回值来判断一个键是否存在,通过返回null来判断。
		
		//获取map集合中所有的值
		Collection<String> coll = map.values();
		System.out.println(coll);
		System.out.println(map);
	}	
}

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

/*
map集合的两种取出方式
1,Set<k> keySet():将map中所有的键存入到Set集合。因为Set集合具备迭代器,
	 所以可以迭代方式取出所有的键,在根据get方法,获取每一个键对应的值。
	 
	 Map集合的取出原理:将map集合转成set集合,再通过迭代器取出。
	 
2,Set<Map.Entry<k,v>> entrySet():将map集合中的映射关系存入到了Set集合,
																	 而这个关系的数据类型就是Map.Entry
*/
import java.util.*;
class MapDemo2
{
	public static void main(String[] args)
	{
		Map<String,String> map = new HashMap<String,String>();
		
		map.put("02","zhangsan2");
		map.put("03","zhangsan3");
		map.put("01","zhangsan1");
		map.put("04","zhangsan4");
		
		//将Map集合中的映射关系取出,存入到Set集合中。
		Set<Map.Entry<String,String>> entrySet = map.entrySet();
		
		Iterator<Map.Entry<String,String>> it = entrySet.iterator();
		
		while(it.hasNext())
		{
			Map.Entry<String,String> me = it.next();
			String key = me.getKey();
			String value = me.getValue();
			
			System.out.println(key+"="+value);	
		}
		
		/*
		//先获取map集合的所有键的Set集合,keySet();
		Set<String> keySet = map.keySet();
		
		//有了Set集合,就可以获取其迭代器
		Iterator<String> it = keySet.iterator();
		
		while(it.hasNext())
		{
			String key = it.next();
			//有了键可以通过map集合的get方法获取其对应的值。
			String value = map.get(key);
			System.out.println("key: "+key+", value: "+value);	
		}
		*/
	}
}
/*
Map.Entry 其实Entry也是一个接口,其实Map接口中的一个内部接口

interface Map
{
	public static interface Entry
	{
		public abstract Object getKey();
		public abstract Object getValue();
	}
}

class HashMap implements Map
{
	class Hash implements Map.Entry
	{
		public abstract Object getKey(){}
		public abstract Object getValue(){}
	}
}
*/

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

个人总结:掌握Map集合的基本方法,Map集合存放的是键值对,注意HashMap和TreeMap之间的区别,

Hashtable已经过时,注意Map集合的两种取出方式,keySet是先获取键,通过对键的迭代获取键对应的

值,entrySet是先获取Map集合中键和值之间的对应关系,然后再取出键和值。
 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值