java Map集合一

/*
Map集合:该集合存储键值对,一对一对往里面存,而且要保证键的唯一性。

Map比较重要的三个子类:
	Hashtable:底层是哈希表数据结构,不可以存入null键null值。该集合是线程同步的(JDK1.0)元老级的。效率低。
	HashMap:底层是哈希表数据结构,允许使用null键null值。该集合是线程不同步的。(JDK1.2)效率高。
	TreeMap:底层数据结构是二叉树,线程不同步,可以用于给map集合中的键进行排序。

发现,Map和Set是很相似的。
其实,Set集合底层就是使用了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)
	isEmpty()
4,获取
	get(Object key)
	size()
	values()



*/
import java.util.*;
class MapDemo 
{
	public static void main(String[] args) 
	{

		HashMap<String,String> hm=new HashMap<String,String>();
		sop(hm.put("01","zhangsan"));//添加元素
		sop(hm.put("01","wangming"));//再次添加相同的键时,后添加的键值会覆盖原有的键值,并返回被覆盖的键值。
		hm.put("02","lisi");		
		hm.put("03","wangwu");
		hm.put("04","zhaoliu");

		sop(hm);
		sop(hm.containsValue("zhangsan"));//判断是否包含某一个值,boolean
		sop(hm.containsKey("02"));//判断是否包含某一个键,boolean
		sop(hm.remove("03"));//删除某一个键值对,remove的参数是键。

		sop(hm);
		sop(hm.isEmpty());//判断是否为空
		sop(hm.get("04"));//根据某个键获取其相应的键值。
		sop(hm.size());//返回Hashmap中键值对的个数。
		sop(hm.values());//只获取集合中的所有键值,而不获取键。返回类型为collection
		hm.put("05",null);//添加键值为空的键值对
		sop(hm);
		hm.put("06","madongmei");
		sop(hm);
		sop(hm.get("madongmei"));
		sop(hm.get("05"));

		Collection<String> co=hm.values();  //返回类型为collection,所以可以用迭代器来遍历集合中的所有元素。
		sop("=======================");
		Iterator<String> it=co.iterator();
		while(it.hasNext())
		{
			sop(it.next());
		}

	}

	public static void sop(Object obj)
	{
		System.out.println(obj);
	}
}


/*
map集合的两种取出方式:
1,	keySet:将map中所有的键存入到Set集合中,因为Set具备迭代器。
           所以可以以迭代的方式取出所有的键,然后再用get方法获得所有的键值。
	返回类型:Set<k>
	Map集合的取出原理:将map集合转换成set集合,再通过迭代器取出。
2,	Set<Map.Entry<k,v>> entrySet:将map集合中的映射关系存入到了set集合中,而这个关系的数据类型就是:Map.Entry
	那么,关系对象Map.Entry获取到后,就可以通过Map.Entry中的getKey和getValue方法来获取Key和Value。
Entry是Map接口的内部接口。内部接口可以被static来修饰。
因为先存在map,然后map中存在映射关系。

*/

import java.util.*;
class MapDemo1 
{
	public static void main(String[] args) 
	{
		//keySetDemo();//方式一
		entrySetDemo();//方式二
	}

	public static void sop(Object obj)
	{
		System.out.println(obj);
	}
	
	public static void keySetDemo()
	{
		Map<String,String> map=new HashMap<String,String>();
		map.put("03","zhangsan03");
		map.put("02","zhangsan02");
		map.put("04","zhangsan04");
		map.put("01","zhangsan01");
		map.put("07","zhangsan07");
		map.put("06","zhangsan06");
		sop(map);

		//使用Map的keySet方法将键取出来并放在Set集合中
		Set<String> s=map.keySet();

		//使用Set集合的Iterator迭代器遍历每个键
		Iterator<String> it=s.iterator();
		while(it.hasNext())
		{
			String key=it.next();
			String value=map.get(key);
			sop("key:"+key+"..value"+value);
		}
	}

	public static void entrySetDemo()
	{
		Map<String,String> map=new HashMap<String,String>();
		map.put("03","zhangsan03");
		map.put("02","zhangsan02");
		map.put("04","zhangsan04");
		map.put("01","zhangsan01");
		map.put("07","zhangsan07");
		map.put("06","zhangsan06");

		Set<Map.Entry<String,String>> s=map.entrySet();
		Iterator<Map.Entry<String,String>> it=s.iterator();
		while(it.hasNext())
		{
			Map.Entry<String,String> me=it.next();
			String key=me.getKey();
			String value=me.getValue();
			sop("key:"+key+"..value:"+value);
		}
	}

}



你可能感兴趣的:(java,Map集合)