zoukankan      html  css  js  c++  java
  • 集合框架__【Map集合】【keySet】【entrySet】【Map.Entry】


    Map集合

    该集合存储键值对,一对一对存储,而且要保证键的唯一性
    1,添加。
    put(K key, V value)当往同一个键上存入了两个值,原有的值会被新的值替换,并由put方法返回
    putAll(Map<? extends K,? extends V> m) 
    2,删除。
    clear() 
    remove(Object key) 
    3,判断。
    containsValue(Object value) 
    containsKey(Object key) 
    isEmpty() 
    4,获取。
    get(Object key)//可以通过get方法的返回值来判断一个件是否存在,是否为null
    size() 
    values() 
    重点:
    entrySet() 
    keySet() 
    Map的子类
    |--Hashtable:底层是哈希表数据结构,不可以存入null键null值。该集合是线程同步的。在jdk1.0.版本出现,效率低。
    |--HashMap:底层是哈希表数据结构,允许使用 null 值和 null 键,该集合是不同步的。用于替代hashtable,出现于jdk1.2.效率高。
    |--TreeMap:底层是二叉树数据结构。线程不同步。可以用于给map集合中的键进行排序。
    Map类似于Set,Set底层就是使用了Map集合

    常见操作示例

    import java.util.*;
    class  MapDemo
    {
    	public static void sop(Object obj)
    	{
    		System.out.println(obj);
    	}
    	public static void main(String[] args) 
    	{
    		Map<String,String> map = new HashMap<String,String>();
    		map.put("01","haha1");
    		map.put("02","haha2");
    		map.put("03","haha3");
    		map.put("03","ha哈哈哈");//当往同一个键上存入了两个值,原有的值会被新的值替换,并由put方法返回
    	
    		sop("containsKey:"+map.containsKey("001"));
    		//sop("remove: "+map.remove("02"));
    		sop("get: "+map.get("020"));//没有则返回null
    		map.put("04",null);
    		sop("get: "+map.get("04"));//可以通过get方法的返回值来判断一个件是否存在,是否为null
    		sop(map);//获取map集合中所有的值
    	}
    }

    map集合两种取出方式:keySet和entrySet

    1,keySet:将map集合转成set集合再通过迭代器取出

    ————即:将map中所有的键存入到Set集合。因为Set具备迭代器,可以通过迭代方式获取所有的键,再根据get方法,获取每个键对应的值

    2,entrySet:
    ————Set<Map.Entry<k,v>>  entrySet:将map集合中的映射关系存入到set集合中;这个关系的数据类型是Map.Entry,
    Map.Entry中的 Entry是一个接口,是Map接口的一个内部接口
    示例

    import java.util.*;
    class MapDemo2 
    {
    	public static void sop(Object obj)
    	{
    		System.out.println(obj);
    	}
    	public static void main(String[] args) 
    	{
    		Map<String,String> map = new HashMap<String,String>();
    		map.put("01","haha01");
    		map.put("04","haha04");
    		map.put("03","haha03");
    		map.put("02","haha02");
    //entrySet		
    		Set<Map.Entry<String,String>> entrySet = map.entrySet();//将Map集合中映射关系取出,存入到Set集合
    		Iterator<Map.Entry<String,String>> it = entrySet.iterator();
    		while (it.hasNext())
    		{
    			Map.Entry<String,String> me = it.next();
    			String key = me.getKey();		//getKey和getValue是Map.Entry<K,V>的方法
    			String value = me.getValue();	//
    			sop("key= "+key+" , value= "+value);
    		}
    //keySet
    		Set<String> keySet = map.keySet();//①获取map集合所有键的Set集合,keySet();
    		Iterator<String> it = keySet.iterator();//②通过Set集合迭代器获取键值
    		while (it.hasNext())
    		{
    			String key = it.next();
    			String value = map.get(key);//③通过键值获取其对应的值
    			sop("key= "+key+" ,value= "+value);
    		}
    	}
    }

    Map.Entry

     Entry是Map接口的一个内部接口

    在源码中的实现示例:

    interface Map
    {
    	public static interface Entry	//内部接口,static是定义在局部的,所以看到静态接口一定是内部接口
    	{
    		public abstract Object getKey();
    		public abstract Object getValue();
    	}
    }
    class HashMap implements Map
    {
    	class Haha implements Map.Entry	//内部类,实现接口的内部类
    	{
    		public  Object getKey(){};
    		public  Object getValue(){};
    	}
    }
    


    Map.Entry表示一种数据类型,即键值对的映射关系,用一个不恰当的比喻通俗点来说:Map中的元素就像是一对夫妻,存入到Set中的Map.Entury就相当于他们的一本结婚证

    图解:








  • 相关阅读:
    有点忙啊
    什么是协程
    HDU 1110 Equipment Box (判断一个大矩形里面能不能放小矩形)
    HDU 1155 Bungee Jumping(物理题,动能公式,弹性势能公式,重力势能公式)
    HDU 1210 Eddy's 洗牌问题(找规律,数学)
    HDU1214 圆桌会议(找规律,数学)
    HDU1215 七夕节(模拟 数学)
    HDU 1216 Assistance Required(暴力打表)
    HDU 1220 Cube(数学,找规律)
    HDU 1221 Rectangle and Circle(判断圆和矩形是不是相交)
  • 原文地址:https://www.cnblogs.com/Joure/p/4337220.html
Copyright © 2011-2022 走看看