黑马程序员——基础知识——Map

------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

Day18

18.01 Map集合概述和特点

       1、Map接口概述

              查看API:Map 一个键对应一个值,一夫一妻

                     将键映射到值得对象

                     一个映射不能包含重复的键

                     每个键最多只能映射到一个值

       2、Map接口和Collection接口的不同

              Map和Collection是并列关系,谁也不实现谁

              Map是双列的根接口,Collection是单列的根接口

              Map的键唯一,Collection的子体系Set是唯一的

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

结构是针对元素有效

              有两个子类HashMap(LinkedHashMap)和TreeMap

              Set集合底层依赖的是Map集合的方法,好处底层只需要写一次哈希算

法就可以了。

 

18.02 Map集合的功能概述

       1、Map集合的功能概述

              添加功能:V put(K key,V value) : 添加元素

                     如果键是第一次存储,就直接存储元素,返回null

                     如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值

              删除功能

                     void clear(): 移除所有的键值对元素

                     Vremove(Object key) : 根据键删除键值对元素,并把值返回

              判断功能

                     booleancontainsKey(Object key)判断集合是否包含指定的键

                     booleancontainsValue(Object value)判断集合是否包含指定的值

                     boolean isEmpty()判断集合是否为空

              获取功能

                     Set>entrySet() :

                     V get(Objectkey) :根据键获取值

                     SetkeySet():获取集合中所有键的集合

                     Collectionvalues():获取集合中所有值得集合

              长度功能

                     int size() 返回集合中的键值对的个数



18.03 Map集合的遍历之键找值

       Map集合没有迭代器,不能直接迭代

       1、键找值思路:

              获取所有键的集合

              遍历键的集合,获取到每一个键

              根据键找值

       2、案例演示

              Map集合的遍历之键找值

 

18.04 Map集合的遍历之键值对对象找键和值

       1、键值对对象找键和值思路://比第一种提高了一点效率

              相当于是将一个键值对看做一个对象,将对象存在Set中,就是将双列

集合的键值对变成单列集合的键值对对象,然后遍历这个集合获取每一个键值对对象,根据键值对对象找键和值

              获取所有键值对对象的集合

              遍历键值对对象的集合,获取到每一个键值对对象

              根据键值对对象找键和值

              Map.Entry相当于接口点接口,其实Entry是Map的内部接口(相当于内部类,接口套接口)。将键和值封装成了Entry对象,并存储在Set集合中。有getKey和getValue方法。

       2、案例演示

              Map集合的遍历之键值对对象找键和值




3、Map集合的遍历之键值对对象找键和值源码分析

       好处:直接获取了键值对对象,获取值得时候不用再使用原来的双列集合了

 

18.05 HashMap集合键是Student值是String的案例

       1、案例演示

       和HashSet一样需要重写HashCode和equals方法,去实现自己要的功能



18.06 LinkedHashMap的概述和使用 

       1、案例演示

              LinkedHashMap的特点

                     底层是链表实现的,可以保证怎么存就怎么取


18.07 TreeMap集合键是Student值是String的案例

       1、案例演示


18.07 TreeMap集合键是Student值是String的案例

       1、案例演示

黑马程序员——基础知识——Map_第1张图片


其实和TreeSet是一个道理,可以传入比较器,也可以让对象实现Comparable接口,使其本身具备比较性

 

18.08 统计字符串中每个字符出现的次数

       1、案例演示



18.09 集合嵌套之HashMap嵌套HashMap

       1、案例演示

18.10 HashMap和Hashtable的区别

       1、面试题

              HashMap和Hashtable的区别

                     Hashtable是JDK1.0版本出现的,是线程安全的,效率低,HashMap

是JDK1.2版本出现的,是线程不安全的,效率高

Hashtable不可以存储null键和null值,HashMap可以存储null键和null值

       2、案例演示


黑马程序员——基础知识——Map_第2张图片

18.11 Collections工具类的概述和常见方法讲解

       1、Collections类概述

              针对集合操作的工具类,方法都是静态的,构造方法被私有。

       2、Collections成员方法

              public static void sort(List list)

              public static int binarySearch(List list , T key)

              public static T max(Collection coll)

              public static voidreverse(List list)

              public static void shuffle(Listlist)

              swap  replaceAll  synchronizedList 



18.12 模拟斗地主洗牌和发牌

       1、案例演示

              模拟斗地主洗牌和发牌,牌没有顺序


黑马程序员——基础知识——Map_第3张图片

18.13 模拟斗地主洗牌和发牌并对牌进行排序的原理图解

       1、画图演示

              画图说明排序原理


黑马程序员——基础知识——Map_第4张图片

将索引和值存入HashMap中,然后一直操作索引,最后通过索引在获取值就可以了

 

18.14 模拟斗地主洗牌和发牌并对牌进行排序的代码实现

       1、案例演示


黑马程序员——基础知识——Map_第5张图片

18.15 泛型固定下边界

       ?  super  E


黑马程序员——基础知识——Map_第6张图片

18.16 总结

       双列集合根接口Map

       单列集合底层依赖的双列集合

       1、keySet   get(key) 2、Map.Entry<>  entrySet  getKey  getValue

       HashMap HashCode equals

       TreeMap     Compatator compare   Comparable compareTo

       HashMap和Hashtable的区别

       斗地主

 

18.17 集合总结




你可能感兴趣的:(黑马程序员——基础知识——Map)