首页 > 代码库 > Map集合

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) 
isEmpty() 

4,获取。
get(Object key) 

size() 


values() 
entrySet() 
keySet() 
Map
|--Hashtable:底层是哈希表数据结构,不可以存入null键null值。该集合是线程同步的。jdk1.0.效率低。
|--HashMap:底层是哈希表数据结构,允许使用 null 值和 null 键,该集合是不同步的。将hashtable替代,jdk1.2.效率高。
|--TreeMap:底层是二叉树数据结构。线程不同步。可以用于给map集合中的键进行排序。

和Set很像,Set底层就是使用了Map集合。

示例:

<span style="font-size:18px;">package tan;
import java.util.*;
public class MapDemo {
	public static void main(String[] args) {
		Map<String, String>map=new HashMap<String, String>();
		    map.put("01", "zhengqiang");
			map.put("02", "xiaoqiang");
			map.put("03", "qiangge");
			map.put("04", "zhuren");
			map.put("04", "beijing");
		
			//添加元素,如果出现添加了相同的键。那么后添加的值会覆盖原有键对应值。并用put方法会返回被覆盖的值。	
			System.out.println("put:"+map.put("05","zhangsan1"));
			System.out.println("put:"+map.put("05","lisi"));
			
	
			System.out.println(map);//{04=beijing, 01=zhengqiang, 02=xiaoqiang, 03=qiangge}
			System.out.println("containsKey:"+map.containsKey("01"));//true
//			System.out.println("remove:"+map.remove("04"));//remove:beijing
			
			System.out.println("get:"+map.get("04"));
			//可以通过get方法的返回值来判断一个键是否存在。通过返回null来判断。
			
			//获取map集合中所有的值。
			Collection<String>coll=map.values();
			System.out.println(coll);//[beijing, lisi, zhengqiang, xiaoqiang, qiangge]
			System.out.println(map);//{04=beijing, 05=lisi, 01=zhengqiang, 02=xiaoqiang, 03=qiangge}
			
					
			
	}
}
</span>


2、map集合的两种取出方式:


1,Set<k> keySet:将map中所有的键存入到Set集合。因为set具备迭代器。
所有可以迭代方式取出所有的键,在根据get方法。获取每一个键对应的值。

Map集合的取出原理:将map集合转成set集合。在通过迭代器取出。

示例:

package tan;
import java.util.*;
public class MapDemo2 {
	public static void main(String[] args) {
		Map<String, String >map=new HashMap<String, String>();
		map.put("01", "Beijing, I'm coming!");
		map.put("02", "Beijing, I'm coming!");
		map.put("03", "Beijing, I'm coming!");
		map.put("04", "Beijing, I'm coming!");
		//先获取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=http://www.mamicode.com/map.get(key);>

2,Set<Map.Entry<k,v>> entrySet:将map集合中的映射关系存入到了set集合中,而这个关系的数据类型就                  是:Map.Entry


Entry其实就是Map中的一个static内部接口。
为什么要定义在内部呢
因为只有有了Map集合,有了键值对,才会有键值的映射关系。关系属于Map集合中的一个内部事物。
        而且该事物在直接访问Map集合中的元素。

示例:

package tan;
import java.util.*;
public class MapDemo2 {
	public static void main(String[] args) {
		Map<String, String >map=new HashMap<String, String>();
		map.put("01", "我不想说");
		map.put("02", "我曾经为你");
		map.put("03", "留下的泪");
		map.put("04", "爱到无路可退");
		//将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=http://www.mamicode.com/me.getValue();>