栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA数据结构(六)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA数据结构(六)

List重复的定义是equels 二叉树是大小  1 MAP 1.1 特点

        1.Map接口是Map集合体系的顶级接口

        2.Map储存的数据是K-V数据,(K-v数据具有自我描述性)

        3.Map的有些子实现K是有序的,有些K是无序的

        4.Map不允许存储重复的元素(注意:重复的定义)

        5.Map的有些子实现允许存储null,有些不允许

注:有序,null,重复等都是指key,我们不关心value

 API

        V put(k,v):添加

        void putAll():添加所有

        v remove(key):根据key删除这个键值对

        v get(objec):根据key获取value

        boolean containsValue()

        boolean containsKey()

视图方法

        Set keySet():返回K的集合

        Collection  values():返回value集合

        set>,entrySet()>:返回键值对集合

2 HashMap

结构:数组+链表+红黑树

key经过计算得到位置,然后比对key的值,一样就替换,不一样就链上

2.1特点

        1.HashMap是Map接口的一个具体子实现

        2.HashMap它的结构是数组+链表+红黑树

        3.数组默认的初始化容量16,扩容机制扩为原来的二倍,默认加载因子:0.75

        4.存储的数据是无序的(通过key计算出的数组下标是不确定的)

        5.允许存储null键与null值

        6.不允许存储重复的key值

        7.线程不安全

8.加载因子是控制该HashMap扩容的阈值,

        存储元素数量>加载因此*数组长度

        eg:数组长度16,加载因子:0.75,只能存储12个元素(指的是12个entry数量而不是12个下标位置)

9.如果我们给定HashMap一个初始 长度,--构造器赋值(与deque不同先减一了,所以是得到是大于等于给定值的最小的2次幂)

 10.key-value数据是如何存储的?

        把key取出,根据k计算hash值:

        根据hash值与数组长度取模,得到下标

        如果下标位置没用存储任何元素,那么就将kv数据创建一个节点(hash,K,V,next)进行存储

               如果经过计算的下标位置没又任何元素,那么就new一个节点

                如果这个位置已经存储了元素,先判断key是否重复(12)

              ---待续

11.hash值的计算

        Hash = (h=key.hashCode())^(h>>>16)

        移动16位的原因:我们希望这个hash算法能够尽可能的充分散列,因此,让hashcode的高位也参与到运算之中,下标的位置将取决于低位+高位+数组长度;

12.HashMap中key值重复的依据与条件是:

 经过计算得到(Key-->hash-->取模得到下标),此时到一个下标上,就回计算

key的hash值是否一样,在hash一样的基础上,key是否相等,相equals;

   Hash

hash算法不是加密算法

加密--->(x)解密

加密是为了解密,而Hash为了散列

MD4、MD5、SHA-1、SHA-2

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/281954.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号