Map集合

/*
Map集合:该集合存储键值对,成对出现,而且要保证键值的唯一性。
	1、添加
		put(K key, V value)
		putAll(Map<? extends K,?extends V> m )
	2、删除
		clear()
		remove(Object key)
	3、判断
		containsKey(Object key)
		containsValue(Object value)
		isEmpty()
	4、获取
		get(Object key)
		size();
		values()
重点取出防方法:
1、Set<Map.Entry<k,v>>  entrySet():将M安排集合中的映射关系存入到set集合中,而关系的类型就是Map.Engtry
2、keySet():将Map中所有的键存入Set集合,因为Set集合具有Iterator,所以可以通过迭代方式取出所有的键,
			然后根据get方法获取每个键值的值.
		Map集合的原理,就是转换为Set集合,通过迭代器
Map:
1、Hashtable“此类实现一个哈希表数据结构,不可以存空键和空值。线程同步(JDK1.0出现)效率低
2、HashMap<K,v>:底层是哈希表数据结构,并允许使用空键和空值,该集合不同步。效率高
3、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("1","zhangsan");
		map.put("2","ljads");
		map.put("3","fads");
		System.out.println("containsKey:" + map.containsKey("2"));
		//System.out.println("remove:" + map.remove("2"));
		System.out.println("get:" + map.get("2"));        //键值不存在返回空null,注意HashMap中键值或值为空,获取都是返回null

		//  先获取map集合中的所有键值的Set集合
		Set<String> pSet =map.keySet();
		//有了Set集合,获取迭代器
		Iterator<String> it =pSet.iterator();
		while(it.hasNext())
		{
			//通过get方法获取值
			System.out.println(map.get(it.next()));
		}

		//将Map集合的关系取出,存入Set集合中
		Set<Map.Entry<String,String>> entrySet = map.entrySet();
		Iterator<Map.Entry<String,String>> pIt = entrySet.iterator();
		while(pIt.hasNext())
		{
			Map.Entry<String,String> mn = pIt.next();
			String key = mn.getKey();
			String value = mn.getValue();
			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();
	}
}

posted @ 2015-01-12 21:24  静以养身 俭以养德  阅读(138)  评论(0编辑  收藏  举报