濮阳网站建设优化,网站建设设计猫和老鼠,网站开发的前置审批是什么意思,百度 网站改版了目录
一、前言
二、概述
三、特点
四、常用方法 1. V put(K key, V value) : Δ代码演示 : 2. V get(Object key) : Δ代码演示 : 3. V remove(Object key) : Δ代码演示 : 4. int size() : Δ代码演示 : 5. default V replace(K key, V value) : Δ代码演示 : 6. bo…目录
一、前言
二、概述
三、特点
四、常用方法 1. V put(K key, V value) : Δ代码演示 : 2. V get(Object key) : Δ代码演示 : 3. V remove(Object key) : Δ代码演示 : 4. int size() : Δ代码演示 : 5. default V replace(K key, V value) : Δ代码演示 : 6. boolean isEmpty() : Δ代码演示 : 7. void clear() : Δ代码演示 : 8. boolean containsKey(Object key) : Δ代码演示 : 9. Set keySet() : Δ代码演示 :
五、 Map集合的遍历 0.前言 : 1.方式一 —— 通过keySet方法和get方法 ①步骤 : ②代码演示 : 2.方式二 —— 通过values方法 ①步骤 : ②代码演示 : 3.方式三 —— 通过entrySet方法 ①步骤 : ②代码演示 :
六、HashMap源码解读深度讲解
七、Hashtable及其子类Properties源码解读
八、TreeMap源码解读
九、完结撒❀ 一、前言 大家好本篇博文是对集合框架中的双列集合——Map集合的一个深度总结。主要内容包括了Map集合的介绍、特点、常用方法演示、遍历方式以及Map接口的几个常用实现类——HashMapHashtableTreeMap的源码分析。 注意 : ①代码中的注释也很重要②不要眼高手低自己跟着过一遍才算有收获③点击文章的侧边栏目录或者文章开头的目录可以进行跳转。良工不示人以朴所有文章都会适时补充完善。大家如果有问题都可以在评论区进行交流或者私信up。感谢阅读 二、概述 1° Map接口与Collection接口并列存在与Collection系列的单列集合相对Map是双列集合用于保存具有映射关系的数据Key-Value键值对。 2° Map接口也属于java.base模块java.util包下如下图所示 : 3° 再来回顾一下Map集合体系的类图如下 : 可以看到Map接口常用的实现类有三个——Hashtable, HashMap, 和TreeMap并且还有两个常用实现类Properties和LinkedHashMap分别是Hashtable和HashMap的子类。 三、特点 1° Map集合中的元素由key-value键值对Entry构成其中key和value可以由任意引用类型的键值对构成会封装到HashMap$Node对象中。 2° 键值对中的key不可重复底层同HashSet但是value可以重复。所以当key或者value为null时key只能有一个是null而value可以有多个是null。 3° 键值对中的key常用String类型来表示。 4° key和value之间存在一一映射关系即总可以通过指定的key来找到其对应的value。 5° 一个key-value键值对存放在一个HashMap$Node类型的对象中。HashMap中的Node内部类实现了Map接口中的Entry内部接口 四、常用方法 1. V put(K key, V value) : 该方法以键值对的形式向集合中添加元素首次添加某元素时返回null重复添加相同键的元素时新值覆盖旧值并返回旧值。 Δ代码演示 : up以Methods类为演示类代码如下 :
package csdn.knowledge.api_tools.gather.map;import java.util.HashMap;
import java.util.Map;public class Methods {public static void main(String[] args) {//演示 : Map集合的常用方法Map map new HashMap();//1.V put(K key, V value) : 以键值对的形式向集合中添加元素/*首次添加某元素时返回null重复添加相同键的元素时新值覆盖旧值并返回旧值*/Object o map.put(916, 计算机网络和数据结构);System.out.println(o);Object o2 map.put(916, 数据结构和计算机网络);System.out.println(o2);map.put(935, 数据结构操作系统和计组);map.put(872, 数据结构和操作系统);System.out.println(map);}
}运行结果 : 2. V get(Object key) : 该方法可以获取到集合中指定键所对应的值若没有则返回null。 Δ代码演示 : up仍以Methods类为演示类代码如下 :
package csdn.knowledge.api_tools.gather.map;import java.util.HashMap;
import java.util.Map;public class Methods {public static void main(String[] args) {//演示 : Map集合的常用方法Map map new HashMap();//2.V get(Object key) : 根据指定键返回其对应的值没有则返回nullmap.put(916, 数据结构和计算机网络);map.put(935, 数据结构操作系统和计组);map.put(872, 数据结构和操作系统);String value1 (String) map.get(916);String value2 (String) map.get(935);String value3 (String) map.get(872);String value4 (String) map.get(408);System.out.println(916—— value1);System.out.println(935—— value2);System.out.println(872—— value3);System.out.println(408—— value4);}
}运行结果 : 3. V remove(Object key) : 根据指定的键删除集合中对应键值对返回删除掉的值若没有则返回null。 Δ代码演示 : up仍以Methods类为演示类代码如下 :
package csdn.knowledge.api_tools.gather.map;import java.util.HashMap;
import java.util.Map;public class Methods {public static void main(String[] args) {//演示 : Map集合的常用方法Map map new HashMap();//3.V remove(Object key) : 根据指定的键删除集合中对应键值对返回删除掉的值若没有则返回null。map.put(916, 数据结构和计算机网络);map.put(935, 数据结构操作系统和计组);map.put(872, 数据结构和操作系统);System.out.println(map map);Object o map.remove(935); //实际可不做接收System.out.println(删除的值 o);System.out.println(map map);Object o1 map.remove(408);System.out.println(删除的值 o1);}
}运行结果 : 4. int size() : 该方法可以获取当前集合中元素的个数集合中键值对的数量。 Δ代码演示 : up仍以Methods类为演示类代码如下 :
package csdn.knowledge.api_tools.gather.map;import java.util.HashMap;
import java.util.Map;public class Methods {public static void main(String[] args) {//演示 : Map集合的常用方法 Map map new HashMap();//4.int size() : 获取当前集合中元素的个数集合中键值对的数量map.put(916, 数据结构和计算机网络);map.put(935, 数据结构操作系统和计组);map.put(872, 数据结构和操作系统);map.put(408, 数据结构计算机组成原理操作系统计算机网络);int number map.size();System.out.println(当前集合中元素的个数 number);}
}运行结果 : 5. default V replace(K key, V value) : 该方法可以根据指定键替换掉其在集合中对应的值并返回被替换的值。 Δ代码演示 : up仍以Methods类为演示类代码如下 :
package csdn.knowledge.api_tools.gather.map;import java.util.HashMap;
import java.util.Map;public class Methods {public static void main(String[] args) {//演示 : Map集合的常用方法Map map new HashMap();//5.default V replace(K key, V value) : 根据指定键替换掉其在集合中对应的值并返回被替换的值map.put(916, 数据结构和计算机网络);map.put(935, 数据结构操作系统和计组);map.put(872, 数据结构和操作系统);map.put(408, 数据结构计算机组成原理操作系统计算机网络);String s (String) map.replace(916, 900 16);System.out.println(被替换掉的值 s);for (Object o : map.entrySet()) {System.out.println(o);}}
}运行结果 : 6. boolean isEmpty() : 该方法可以判断当前集合是否为空。 Δ代码演示 : up仍以Methods类为演示类代码如下 :
package csdn.knowledge.api_tools.gather.map;import java.util.HashMap;
import java.util.Map;public class Methods {public static void main(String[] args) {//演示 : Map集合的常用方法Map map new HashMap();//6.boolean isEmpty() : 判断当前集合是否为空。System.out.println(当前集合为空吗 map.isEmpty());map.put(1, 666);map.put(2, 233);System.out.println(当前集合为空吗 map.isEmpty());}
}运行结果 : 7. void clear() : 该方法可以清空当前集合中所有的键值对。 Δ代码演示 : up仍以Methods类为演示类代码如下 :
package csdn.knowledge.api_tools.gather.map;import java.util.HashMap;
import java.util.Map;public class Methods {public static void main(String[] args) {//演示 : Map集合的常用方法Map map new HashMap();//7.void clear() : 清空当前集合。map.put(1, 666);map.put(2, 233);map.put(3, 141);map.put(4, 424);System.out.println(map map);map.clear();System.out.println(map map);}
}运行结果 : 8. boolean containsKey(Object key) : 该方法可以查询集合中是否存在指定的键存在则返回true。 Δ代码演示 : up仍以Methods类为演示类代码如下 :
package csdn.knowledge.api_tools.gather.map;import java.util.HashMap;
import java.util.Map;public class Methods {public static void main(String[] args) {//演示 : Map集合的常用方法Map map new HashMap();//8.boolean containsKey(Object key) : 判断集合中是否存在指定键map.put(1.1, 迫近的客星);map.put(1.2, 白垩与黑龙);map.put(1.3, 明霄升海平);System.out.println(集合中是否存在1.1键 map.containsKey(1.1));System.out.println(集合中是否存在1.3键 map.containsKey(1.1));System.out.println(集合中是否存在2.1键 map.containsKey(2.1));}
}运行结果 : 9. SetK keySet() : 该方法可以获取到当前Map集合中所有的键并将它们存在在一个Set集合中返回该Set集合。 Δ代码演示 : up仍以Methods类为演示类代码如下 :
package csdn.knowledge.api_tools.gather.map;import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class Methods {public static void main(String[] args) {//演示 : Map集合的常用方法Map map new HashMap();//9.SetK keySet() : 获取键的集合返回一个Set集合。map.put(胡图图, 动耳神功);map.put(胡英俊, 英俊潇洒);map.put(胡歌, 好男人胡歌);Set set map.keySet();System.out.println(set);}
}运行结果 : 五、 Map集合的遍历 0.前言 : java的设计者提供了一些机制来更好地遍历Map集合——它们令HashMap类的Node类型实现了Map类的Entry接口而Entry接口中提供了访问键和值的方法。 同时它们又在HashMap类中定义了EntrySet类型用于替代Map集合进行遍历操作相当于EntrySet指向了Map集合中的元素遍历EntrySet类型中的键值对实际上仍是遍历Map集合中实际存在的键值对。 可以通过entrySet方法来获取指向了Map集合中键值对的Set集合如下 : 可以看到其元素类型为Map.Entry类型。 上面这一大堆说句人话就是——java的爸爸们把Node类型做成了Entry类型又想办法放到EntrySet里面去了最终是为了方便Map集合的遍历。 1.方式一 —— 通过keySet方法和get方法 ①步骤 : 1.获取所有键的集合 2.遍历所有的键获取到每一个键 3.根据键获取指定的值 ②代码演示 : up以Traverse_map类为演示类代码如下 :
package csdn.knowledge.api_tools.gather.map;import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;/*** author : Cyan_RA9* version : 21.0*/
public class Traverse_map {public static void main(String[] args) {//演示 : 遍历Map集合方式一Map map new HashMap();map.put(1, 张三);map.put(2, 李四);map.put(3, 王五);map.put(4, 赵六);//1.获取所有键的集合Set keys map.keySet();Iterator iterator keys.iterator();//2.遍历所有的键获取到每一个键System.out.println(迭代器遍历);while (iterator.hasNext()) {Integer integer (Integer) iterator.next();//3.根据键获取指定的值String value (String) map.get(integer);System.out.println(key integer , value value);}System.out.println(增强for遍历);for (Object key : keys) {Integer integer (Integer) key;String value (String) map.get(integer);System.out.println(key integer , value value);}}
}运行结果 : 2.方式二 —— 通过values方法 ①步骤 : 1.根据values方法获取所有的值 2.利用迭代器或者增强for遍历获取到的值 ②代码演示 : up仍以Traverse_map类为演示类代码如下 :
package csdn.knowledge.api_tools.gather.map;import java.util.*;/*** author : Cyan_RA9* version : 21.0*/
public class Traverse_map {public static void main(String[] args) {//演示 : 遍历Map集合方式二Map map new HashMap();map.put(比企谷八幡, 雪之下雪乃);map.put(神田空太, 稚名真白);map.put(三鹰仁, 上井草美咲);//1.获取所有的值Collection values map.values();Iterator iterator values.iterator();//2.遍历获取到的值System.out.println(迭代器遍历:);while (iterator.hasNext()) {String value (String) iterator.next();System.out.println(value);}System.out.println(增强for遍历:);for (Object value : values) {System.out.println(value);}}
}运行结果 : 3.方式三 —— 通过entrySet方法 ①步骤 : 1.根据entrySet方法获取到——保存了Map.Entry类型元素的——Set集合 2.利用迭代器或者增强for遍历获取到的Set集合 3.注意Set集合中的元素编译类型是Entry类型但运行类型其实是Node类型 ②代码演示 : up仍以Traverse_map类为演示类代码如下 :
package csdn.knowledge.api_tools.gather.map;import java.util.*;/*** author : Cyan_RA9* version : 21.0*/
public class Traverse_map {public static void main(String[] args) {//演示 : 遍历Map集合方式三Map map new HashMap();map.put(比企谷八幡, 雪之下雪乃);map.put(神田空太, 稚名真白);map.put(三鹰仁, 上井草美咲);//1.根据entrySet方法获取到保存键值对的Set集合Set mappings map.entrySet();Iterator iterator mappings.iterator();//2.遍历获取到的Set集合System.out.println(迭代器遍历:);while (iterator.hasNext()) {Object entry iterator.next();System.out.println(entry);}System.out.println(增强for遍历:);for (Object mapping : mappings) {Map.Entry entry (Map.Entry) mapping; //多态(Entry类型指向了Node类型System.out.println(entry);}}
}运行结果 : 六、HashMap源码解读深度讲解 链接如下 : https://blog.csdn.net/TYRA9/article/details/129781346?spm1001.2014.3001.5501https://blog.csdn.net/TYRA9/article/details/129781346?spm1001.2014.3001.5501 HashMap类主要内容包括 : ①HashMap类简介 ②HashMap类的底层实现 ③HashMap类的源码分析 七、Hashtable及其子类Properties源码解读 链接如下 : https://blog.csdn.net/TYRA9/article/details/129821222?spm1001.2014.3001.5501https://blog.csdn.net/TYRA9/article/details/129821222?spm1001.2014.3001.5501 Hashtable及其子类Properties主要内容包括 : ①Hashtable类详解1° 简介2° 特点3° 底层实现4° 比较 ②Properties类详解1° 简介2° 特点3° 具体使用 八、TreeMap源码解读 链接如下 : https://blog.csdn.net/TYRA9/article/details/129906619?spm1001.2014.3001.5501https://blog.csdn.net/TYRA9/article/details/129906619?spm1001.2014.3001.5501 TreeMap主要内容如下 : ①TreeSet类简介 ②TreeSet类的底层实现 ③TreeMap类简介 ④TreeMap类的底层实现 九、完结撒❀ 以上就是我们Map集合的全部内容了。重点仍是Map接口的几个常用实现类的源码分析。下一小节内容up计划与大家分享关于Collections类的内容Collections类讲解完后整个API常用工具——集合就算是讲解完毕了。感觉阅读 System.out.println(END----------------------------------------------------------------------------);