热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

1/20笔记

1散列表1.1概述散列表结构可以理解为数组中保存的是链表首节点,用来保存k和v键值对操作hash算法:是一种安全的加密机制可以把不定长的数据转换为定长数据,并且不能保证唯一性,又叫

1 散列表

1.1 概述

散列表结构 可以理解为 数组中保存的是链表首节点,用来保存k和v键值对操作

hash算法:是一种安全的加密机制 可以把不定长的数据转换为定长数据,并且不能保证唯一性,又叫哈希冲突

在java中,指的就是hashCode方法

对一个对象生成多次hash值,值一定相同,_多个对象也可能生成相同的hash值,叫哈希冲突_

k不可重复,v可重复

添加过程:

1)根据要添加的key,调用他的hashCode方法,生成hash值

2)通过一定的算法,根据hash值生成数组的下标

3)判断该下标中是否有数据,如果没数据就把该键值对映射关系保存到数组中

4)如果该下标中有数据,则调用key的equals方法 和对应的所有数据进行比较,如果不相等,则添加到链表尾部即可

5)如果对应的链表中通过equals方法比较的时候,发现了相同的数据,那么key不再添加,但是value值会替换原来的value值

通过添加过程得知,会自动调用hashCode和equals,所以在保存自定义类型的时候,需要注意方法覆写

在1.8中,为了提高查询效率引入了红黑树和扩容的优化                                                                    因为链表在查询功能上较差,所以每个数组中的链表个数如果大于等于7,则会把该链表转换为    红黑树。                                                                                                                                          数组默认初始化容量为16

1.2 HashSet

当我们使用HashSet的时候,其实就等于是在使用HashMap

添加数据的时候,虽然调用的是HashSet的add方法,但是本质还是调用map的put方法

Ps : 在map中,put是添加操作

而 map中 需要保存的是k和v映射关系,所以在set中有一个变量保存了value的值

所以我们再进行set添加的时候,只操作了map中的key,value值我们不再关心

3 Map

3.1 概述

Map是无序的,并且保存的是k-v键值对,其中k不能重复,v可以重复

HashMap:底层是散列表

TreeMap:底层是红黑树,元素必须按照一定规则进行排序

映射关系:比如 商品 和 购买数量,或者数据统计

        "sadjaksldjlajsld"统计每个字符出现的次数,使用HashMap进行存储,字符做K,次数做V

3.2 HashMap

System.out.println(map.size());个数

System.out.println(map.get(key));根据key获取value的值

System.out.println(map.containsKey(key));判断是否包含某个key

System.out.println(map.containsValue(value));判断是否包含某个value

map.remove(key);根据key删除 该映射关系,返回对应的value值

获取所有的value,并放到集合中返回

Collection values = map.values();

for (Object object : values) {

System.out.println(object);

}

keySet : 获取所有的key,封装到set对象中并返回

Set keys = map.keySet();

for (Object object : keys) {

System.out.println(object +":"+map.get(object));

}

把map转换为set

Entry类中,保存了K和V两个变量,把map中的k和v转换为entry类的对象进行存储

所以我们只需要保存entry对象,就等于保存了k和v

Set set  = map.entrySet();

for (Object object : set) {

System.out.println(object);

}

3.3 TreeMap

TreeMap 保存的元素会按照一定的规则进行排序,底层是红黑树

4 泛型

4.1 概述

泛型:在编译过程中检测数据类型是否匹配

泛型 必须使用引用型类型 不能使用基本类型 想要保存基本类型的话,要编写对应的包装类类型

优点:统一了数据类型,减少了类型转换,不会出现类型转换异常

缺点:只能保存同一种类型

定义泛型,使用大写字母A-Z表示,写什么都一样,都只是占位符而已,只不过 某些字符也有一些特殊含义

定义泛型,使用大写字母A-Z表示,写什么都一样,都只是占位符而已,只不过 某些字符也有一些特殊的含义
E : Element 一般代表元素,而集合中的数据 我们叫元素,所以在集合中出现的泛型一般使用E表示
K : Key 表示键
V : value 表示值 K和V一般在散列表中出现(Map)
T : Type 表示一个java类型
N : 表示Number
? : 表示不确定的类型
如果规定了泛型,但是使用的地方没有指定泛型,则默认为Object类型

Map以Value进行排序
Map是没有办法按照value排序的,因为源码中写死了 是用key进行比较
所以 只能保存到List中进行排序



推荐阅读
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
author-avatar
刚辉19861126
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有