java毕向东听课笔记27(集合框架-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()

                              entrySet()

                              keySet()

Map

        |--Hashtable:底层是哈希表数据结构,不可以存入null作为键或值。该集合是线程同步的。jdk1.0。效率低

        |--HashMap:底层是哈希表数据结构。并允许使用null作为键或值。该集合是不同步的。jdk1.2。效率高

        |--TreeMap:底层是二叉树数据结构。线程不同步,可以用于给Map集合中的键进行排序

其实Set底层就是使用了Map集合。

Map的共性方法:

import java.util.*;

class MapDemo1{
	public static void main(String[] args){
		Map<String,String> map = new HashMap<String,String>();
		//添加元素
		System.out.println("put:"+map.put("01","zhangsan1"));//put方法是有返回值的
		System.out.println("put:"+map.put("01","wangwu"));
		//当存入相同键的时候(“01”),新的值会替换老的值,而且put方法会把老的值返回来
		map.put("02","zhangsan2");
		map.put("03","zhangsan3");
		
		System.out.println("containsKey"+map.containsKey("02"));
		System.out.println("remove"+map.remove("02"));
		//删除会返回该键所对应的值:zhangsan2
		System.out.println("get"+map.get("02"));
		//获取也会返回该键所对应的值,若不存在,和删除一样,都会返回null
		map.put(null,"haha");
		System.out.println("get:"+map.get(null));
		//HashMap集合是可以让null作为键值存在的,但是开发中很少见
		map.put("04",null);
		System.out.println("get:"+map.get("04"));
		//和上一句代码一样,null也可以作为键值存在,但更不常见
		
		//获取Map集合中所有的值
		Collection<String> coll = map.values();
		System.out.println(coll);
		System.out.println(map);
	}
}

java毕向东听课笔记27(集合框架-Map)_第1张图片

重点说一下Map集合的两种取出方式:

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

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集合,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);
		}
	}
}

java毕向东听课笔记27(集合框架-Map)_第2张图片

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);
		}
		*/
	}
}

java毕向东听课笔记27(集合框架-Map)_第3张图片

Map.Entry  其实Entry也是一个接口,它是Map接口中的一个内部接口

你可能感兴趣的:(java毕向东听课笔记27(集合框架-Map))