05 深入了解Map集合

一: Map集合的特点:
  将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。 
二: Map集合和Collection集合的区别?
  Map集合存储元素是成对出现的,Map集合的键是唯一的,值是可重复的。可以把这个理解为:夫妻对

  Collection集合存储元素是单独出现的,Collection的儿子Set是唯一的,List是可重复的。可以把这个理解为:光棍(11.11)

Map集合的数据结构值针对键有效,跟值无关

  Collection集合的数据结构是针对元素有效

Map集合功能:添加   删除   获取  判断  长度    遍历 代码如下:

package Map;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/***
  *
 * 
 * Map集合的功能概述:
 * 1:添加功能
 * 		V put(K key,V value):添加元素。这个其实还有另一个功能?先不告诉你,等会讲
 * 			如果键是第一次存储,就直接存储元素,返回null    
 * 			如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值
 * 2:删除功能
 * 		void clear():移除所有的键值对元素
 * 		V remove(Object key):根据键删除键值对元素,并把值返回
 * 3:判断功能
 * 		boolean containsKey(Object key):判断集合是否包含指定的键
 * 		boolean containsValue(Object value):判断集合是否包含指定的值
 * 		boolean isEmpty():判断集合是否为空
 * 4:获取功能
 * 		Set<Map.Entry<K,V>> entrySet()返回的是键值对对象的集合
 * 		V get(Object key):根据键获取值
 * 		Set<K> keySet():获取集合中所有键的集合
 * 		Collection<V> values():获取集合中所有值的集合
 * 5:长度功能
 * 		int size():返回集合中的键值对的对数
 *  
 *  
 */
public class MapDemo {
	public static void main(String[] args) {
		Map<String,String> map = new HashMap<String,String>();
		//添加功能
//		如果键是第一次存储,就直接存储元素,返回null   如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值
//		System.out.println(map.put("文章", "马伊琍"));
//		System.out.println(map.put("文章", "姚笛"));
		map.put("周杰伦", "昆凌");
		map.put("刘恺威", "杨幂");
		map.put("文章", "马伊琍");
		map.put("黄晓明", "杨颖");
		
		//删除功能
//		map.clear();
//		System.out.println("删除"+map.remove("黄晓明"));
//		System.out.println("删除"+map.remove("黄晓波"));
		
	    //判断功能
//		System.out.println("判断"+map.containsKey("黄晓明"));
//		System.out.println("判断"+map.containsKey("黄小波"));
//		System.out.println(map.isEmpty());
		//长度功能
//		System.out.println(map.size());
		
		//获取功能
//		System.out.println(map.get("周杰伦"));
//		System.out.println(map.get("周杰"));
//		System.out.println("-------------------------");
//		Set<K> keySet():获取集合中所有键的集合
	/*	Set<String> set = map.keySet();
		for(String s:set){
		System.out.println(s);
		}
		System.out.println("-------------------------");*/
				/* 		Collection<V> values():获取集合中所有值的集合*/
//		Collection<String> son  = map.values();
//		for (String s:son) {
//			System.out.println(s);
//			
//		}
		
		/*Map集合的遍历    夫妻对
	*思路:
	*    A 把所有的丈夫集中起来/获取所有的键
	*    B 遍历丈夫的集合,获取每一个丈夫/遍历键的集合,获取每一个键
	*    C 让丈夫找自己的妻子/根据键去找值*/
		
//		Set<Map.Entry<K,V>> entrySet():???
		
		//遍历 方式一
		//获取所有的键
		Set<String> set = map.keySet();
		//遍历键的集合,获取每一个键
		for(String key:set){
		//根据键去找值
			String value = map.get(key);
			System.out.println(key+"------"+value);
		}
		
		//遍历方式二
		/*Map--  夫妻对
		*思路:
		*    A 获取所有结婚证的集合/获取所有键值对的集合
		*    B 遍历结婚证的集合,得到每一个结婚证/遍历键值对对象的集合,得到每一个键值对对象
		*    C 根据结婚证获取丈夫和妻子/根据键值对对象获取键和值
		*/    
		//获取每一个键值对对象,Entry为实体
		//获取所有键值对的集合
		Set<Map.Entry<String,String>> set2 = map.entrySet();
		//遍历键值对对象的集合,得到每一个键值对对象
		for(Map.Entry<String,String> me:set2){
			//根据键值对对象获取键和值
			String key = me.getKey();
			String value = me.getValue();
			System.out.println(key+"-----"+value);	
		}
		
		
	
	}
}

遍历的两种方式:

第一:根据键找值

         获取所有键的集合
         遍历键的集合,获取到每一个键
         根据键找值
第二: 根据键值对对象找键和值
           获取所有键值对对象的集合
          遍历键值对对象的集合,获取到每一个键值对对象
           根据键值对对象找键和值
LinkedHashMap 类中由哈希表保证键唯一,链表是有序的(有序 唯一)

面试题:1 HashMap和Hashtable的区别?

                   Hashtable:线程安全,效率低,不允许null键和null值

                   HashMap:线程不安全,效率高,允许null键和null值

            2 Collection 和 Collections的区别?

                    Collection :是单列集合的顶层接口,有子接口List和Set

                    Collections:是针对集合操作的工具类,有对集合进行排序和二分查找的方法




猜你喜欢

转载自blog.csdn.net/zhangxinxin1108/article/details/79540439
05
今日推荐