当前位置: 首页 > news >正文

网站经常做封面的那些番号.netcore网站开发

网站经常做封面的那些番号,.netcore网站开发,关于vi设计的网站,四川建设信息网目录 一.认识哈希表#xff1a; 1.1什么是哈希表#xff1f; 1.2哈希表的表示#xff1a; 1.3常见哈希函数#xff1a; 二.认识HashMap和HashSet: 2.1关于Map.Entry的说明:, 2.2Map常用方法说明#xff1a; 2.3HashMap的使用案例#xff1a; 2.4Set常见方法…目录 一.认识哈希表 1.1什么是哈希表 1.2哈希表的表示  1.3常见哈希函数 二.认识HashMap和HashSet: 2.1关于Map.Entry的说明:, 2.2Map常用方法说明 2.3HashMap的使用案例 2.4Set常见方法说明 2.5HashSet使用案例 源码 一.认识哈希表 1.1什么是哈希表 之前的学习中如果我们要查找一个元素肯定是要经过比较的那有没有一种办法可以不用经过比较直接就能拿到呢 如果我们能构造一种存储结构通过一种函数 (hashFunc) 使元素的存储位置与函数得出的关键码之间能够建立一一映射的关系那么在查找某个元素的时候就能通过这个函数来很快的找到该元素所在的位置。 这种函数就叫做哈希(散列)函数上述所说构造出来的结构叫做哈希表或者称为散列表。 哈希表简介 哈希表Hash Table也叫做散列表。是根据关键码值Key Value直接进行访问的数据结构。哈希表通过「键 key 」和「映射函数 Hash(key) 」计算出对应的「值 value」把关键码值映射到表中一个位置来访问记录以加快查找的速度。这个映射函数叫做「哈希函数散列函数」存放记录的数组叫做「哈希表散列表」。 1.2哈希表的表示  举个栗子为了记录一个班的学生的信息分别包括学号和姓名。我们就可以用哈希表数组加链表来记录这里学号(关键值key)通过哈希函数得到一个数组下标这个下标就是这个学生信息存放在对应数组中的位置同时学生的信息姓名和学号叫做键值对又称作Entry 使用方法 向哈希表中插入一个关键码值哈希函数决定该关键字的对应值应该存放到表中的哪个区块并将对应值存放到该区块中。在哈希表中搜索一个关键码值使用相同的哈希函数从哈希表中查找对应的区块并在特定的区块搜索该关键字对应的值。实现哈希表 数组链表 或者  数组二叉树 1.3常见哈希函数 直接定值法--常用取关键字的某个线性函数为散列地址HashKey A*Key B 优点简单、均匀 缺点需要事先知道关 键字的分布情况 使用场景适合查找比较小且连续的情况. 除留余数法--(常用)   设散列表中允许的 地址数为 m 取一个不大于 m 但最接近或者等于 m 的质数 p 作为除数按照哈希函数 Hash(key) key% p(pm), 将关键码转换成哈希地址 例如 二.认识HashMap和HashSet: HashMap和HashSet是Java集合框架中的两个常用类它们都实现了Set接口但在实现原理和用途上有一些区别。 HashMap:HashMap是基于哈希表的实现它使用键值对key-value的方式存储数据。HashMap允许存储null键和null值并且可以存储重复的值但不允许重复的键。HashMap内部使用哈希函数将键映射到哈希表的索引位置以实现快速的插入、删除和查找操作。HashMap的查找操作是通过键来进行的因此可以根据键快速地获取对应的值。HashSet:HashSet也是基于哈希表的实现它存储唯一的元素不允许重复值。HashSet允许存储null值但只能存储一个null元素。HashSet内部使用哈希函数将元素映射到哈希表的索引位置以实现快速的插入、删除和查找操作。HashSet的查找操作是通过元素来进行的因此可以根据元素快速地判断是否存在于集合中。 2.1关于Map.EntryK, V的说明: Map.EntryK, V 是 Map 内部实现的用来存放 key, value 键值对映射关系的内部类 该内部类中主要提供了 key, value的获取 value 的设置以及 Key 的比较方式。 方法解释 K getKey () 返回 entry 中的 key V getValue () 返回 entry 中的 value V setValue(V value) 将键值对中的 value 替换为指定 value 注意 Map.EntryK,V 并没有提供设置 Key 的方法 2.2Map常用方法说明 2.3HashMap的使用案例 基础操作 MapString, String m new HashMap();// put(key, value):插入key-value的键值对// 如果key不存在会将key-value的键值对插入到map中,返回nullm.put(林冲, 豹子头);m.put(鲁智深, 花和尚);m.put(武松, 行者);m.put(宋江, 及时雨);String str m.put(李逵, 黑旋风);m.remove(武松,行者);System.out.println(map的大小size m.size());System.out.println(map中的元素 m);System.out.println(这时str为空 str);// put(key,value): 注意key不能为空但是value可以为空m.put(无名, null); // key如果为空会抛出空指针异常System.out.println(当前map的大小 m.size());str m.put(李逵, 铁牛);System.out.println(返回旧的value值 str);System.out.println(得到Key所对应的value值: m.get(李逵)); 运行结果 GetOrDefault()和containKey(key) //GetOrDefault(): 如果key存在返回与key所对应的value如果key不存在返回一个默认值System.out.println();System.out.println(李逵存在返回key对应的value m.getOrDefault(李逵, 牛牛));System.out.println(史进不存在返回一个默认值 m.getOrDefault(史进, 九龙纹));System.out.println();//containKey(key)检测key是否包含在Map中时间复杂度O(logN)System.out.println(m.containsValue(豹子头));System.out.println(m.containsValue(行者)); 运行结果 三种遍历方法 System.out.println(-----key ------value -----Entry的遍历方法----------);System.out.println(key遍历: );for (String s : m.keySet()) {System.out.print(s );}System.out.println();System.out.println(value遍历: );for (String s : m.values()) {System.out.print(s );}System.out.println();System.out.println(entry遍历: );for (Map.EntryString, String entry : m.entrySet()) {System.out.println(entry.getKey() --- entry.getValue());} 运行结果 注意 1. Map 是一个接口不能直接实例化对象 如果 要实例化对象只能实例化其实现类 TreeMap 或者 HashMap 2. Map 中存放键值对的 Key 是唯一的 value 是可以重复的 3. Map 中的 Key 可以全部分离出来存储到 Set 中 来进行访问 ( 因为 Key 不能重复 ) 。 4. Map 中的 value 可以全部分离出来存储在 Collection 的任何一个子集合中 (value 可能有重复 ) 。 5. Map 中键值对的 Key 不能直接修改 value 可以修改如果要修改 key 只能先将该 key 删除掉然后再来进行重新插入。 2.4Set常见方法说明 方法解释 boolean add (E e) 添加元素但重复元素不会被添加成功 void clear () 清空集合 boolean contains (Object o) 判断 o 是否在集合中 IteratorE iterator () 返回迭代器 boolean remove (Object o) 删除集合中的 o int size() 返回set中元素的个数 boolean isEmpty() 检测 set 是否为空空返回 true 否则返回 false Object[] toArray() 将 set 中的元素转换为数组返回 boolean containsAll(Collection? c) 集合 c 中的元素是否在 set 中全部存在是返回 true 否则返回 false boolean addAll(Collection? extends E c) 将集合 c 中的元素添加到 set 中可以达到去重的效果 2.5HashSet使用案例 System.out.println(HashSet);SetString s new HashSet();boolean isIn s.add(apple);s.add(orange);s.add(peach);s.add(banana);System.out.println(s.size());System.out.println(s);System.out.println(add(key): 如果key不存在则插入返回true: isIn);isIn s.add(apple);System.out.println(add(key):如果key存在则返回false: isIn);// contains(key): 如果key存在返回true否则返回falseSystem.out.println(s.contains(apple));System.out.println(s.contains(watermelen));s.remove(apple);// remove(key): key存在删除成功返回trueSystem.out.println(s);// key不存在删除失败返回false , key为空System.out.println(迭代器遍历);IteratorString it s.iterator();while (it.hasNext()) {System.out.print(it.next() );} 运行结果 注意 1. Set 是继承自Collection的一个接口类 2. Set 中只存储了 key 并且要求 key 一定要唯一 3. Set 的底层是使用 Map 来实现的其使用 key 与 Object 的一个默认对象作为键值对插入到 Map 中的 4. 实现 Set 接口的常用类有 TreeSet 和 HashSet 还有一个 LinkedHashSet LinkedHashSet 是在 HashSet 的基础上维护了一个双向链表来记录元素的插入次序。 5. Set 中的Key不能修改如果要修改先将原来的删除掉然后再重新插入 6. Set 中不能插入null的key 源码 import java.util.TreeMap; import java.util.Set; import java.util.Map;public class Test1 {public static void main(String[] args) {MapString, String m new HashMap();// put(key, value):插入key-value的键值对// 如果key不存在会将key-value的键值对插入到map中,返回nullm.put(林冲, 豹子头);m.put(鲁智深, 花和尚);m.put(武松, 行者);m.put(宋江, 及时雨);String str m.put(李逵, 黑旋风);m.remove(武松,行者);System.out.println(map的大小size m.size());System.out.println(map中的元素 m);System.out.println(这时str为空 str);// put(key,value): 注意key不能为空但是value可以为空m.put(无名, null); // key如果为空会抛出空指针异常System.out.println(当前map的大小 m.size());str m.put(李逵, 铁牛);System.out.println(返回旧的value值 str);System.out.println(得到Key所对应的value值: m.get(李逵));//GetOrDefault(): 如果key存在返回与key所对应的value如果key不存在返回一个默认值System.out.println();System.out.println(李逵存在返回key对应的value m.getOrDefault(李逵, 牛牛));System.out.println(史进不存在返回一个默认值 m.getOrDefault(史进, 九龙纹));System.out.println();//containKey(key)检测key是否包含在Map中时间复杂度O(logN)System.out.println(m.containsValue(豹子头));System.out.println(m.containsValue(行者));System.out.println(-----key ------value -----Entry的遍历方法----------);System.out.println(key遍历: );for (String s : m.keySet()) {System.out.print(s );}System.out.println();System.out.println(value遍历: );for (String s : m.values()) {System.out.print(s );}System.out.println();System.out.println(entry遍历: );for (Map.EntryString, String entry : m.entrySet()) {System.out.println(entry.getKey() --- entry.getValue());}System.out.println(HashSet);SetString s new HashSet();boolean isIn s.add(apple);s.add(orange);s.add(peach);s.add(banana);System.out.println(s.size());System.out.println(s);System.out.println(add(key): 如果key不存在则插入返回true: isIn);isIn s.add(apple);System.out.println(add(key):如果key存在则返回false: isIn);// contains(key): 如果key存在返回true否则返回falseSystem.out.println(s.contains(apple));System.out.println(s.contains(watermelen));s.remove(apple);// remove(key): key存在删除成功返回trueSystem.out.println(s);// key不存在删除失败返回false , key为空System.out.println(迭代器遍历);IteratorString it s.iterator();while (it.hasNext()) {System.out.print(it.next() );}} } 结语 写博客不仅仅是为了分享学习经历同时这也有利于我巩固自己的知识点总结该知识点由于作者水平有限对文章有任何问题的还请指出接受大家的批评让我改进。同时也希望读者们不吝啬你们的点赞收藏关注你们的鼓励是我创作的最大动力
http://www.w-s-a.com/news/4178/

相关文章:

  • 建站及推广瓦房店 网站建设
  • 怎么查网站是在哪里备案的广州电力建设有限公司网站
  • 做网站自己申请域名还是对方wordpress管理地址
  • 专门做二手书网站或appwordpress首页显示特定分类文章
  • 无锡网站设计厂家一建十个专业含金量排名
  • 网站刷链接怎么做成都高度网站技术建设公司
  • flash网站模板怎么用xml网站地图生成
  • 英文网站优化群晖wordpress中文
  • saas建站平台源码济南品牌网站建设公司
  • 网站建设一般是用哪个软件网站百度
  • 企业建站的作用是什么南宁公司网站开发
  • 厦门网站建设及维护门户网站开发视频教学
  • 可以做兼职的网站有哪些自动点击器永久免费版
  • 建购物网站怎么建呀网站怎么做中英文交互
  • 网站建设费用计入无形资产做网站用的主机
  • 佛山企业网站建设平台沈阳网站建设培训班
  • 河南企业网站优化外包网站怎么做来流量
  • 网站建设的参考文献网站设计网页的优缺点
  • WordPress多站點支付插件内江市网站建设培训
  • 做做网站已更新动漫制作专业需要学什么
  • dfv印花图案设计网站网站建设应该应聘什么岗位
  • 网站后台管理系统模板下载专业网站推广的公司哪家好
  • 克拉玛依市建设局网站网页设计板式重构
  • 网站新闻专题怎么做湖南营销型网站建设 要上磐石网络
  • 阿里云发布网站成都轨迹公布
  • php网站源码架构谷歌站群系统
  • 潮州网站seowordpress 调用置顶文章
  • 做带会员后台的网站用什么软件旅游网站建设资金请示
  • 商品网站怎么做wordpress 表情拉长
  • 商城网站设计费用网络公司怎样推广网站