一.数据结构:
1.定义:数据结构是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。
2.常见类型:
数组Array、栈stack、队列queue、链接LinkedList、树Tree、哈希表、堆heap、图graph
3.区别:主要有四个方面,【底层(数组、链表、树)、是否线程安全、是否有序、值是否唯一】
大多数底层都是(数组+链表)
线程安全:vector、hashTable、ConcurrentHashMap
有序:vector、LinkedList、ArrayList、treeSet、treeMap
值唯一:hashSet、treeSet、值不能为空hashTable
4.hashMap:底层为数组、链表、(黑红)树【链表长度大于8时,转换为树】,通过唯一key,经过hashcode()与equals()方法确定具体存储位置。
5.hashMap、hashTable、ConcurrentHashMap:
a.hashTable、ConcurrentHashMap线程安全,需要线程安全时,建议使用ConcurrentHashMap
b.锁分段技术:首先将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问。
Hashtable中采用的锁机制是一次锁住整个hash表,从而在同一时刻只能由一个线程对其进行操作;
而ConcurrentHashMap中则是一次锁住一个桶。
ConcurrentHashMap默认将hash表分为16个桶,诸如get、put、remove等常用操作只锁住当前需要用到的桶。
这样,原来只能一个线程进入,现在却能同时有16个写线程执行,并发性能的提升是显而易见的。
c.HashMap是baiHashtable的轻量级实现,HashMap允许空(null)键值(key)Hashtable、ConcurrentHashMap不允许,效率要高于Hashtable
d.HashMap初始size为16、hashTable初始size为11。
e.hashMap、ConcurrentHashMap:底层是(数组、链表、红黑树)、hashTable(数组、链表)
二.算法:
1.五大特征:有穷性、确定性、可行性、有输入、有输出
2.设计原则:正确性、可读性、健壮性、高效率与低存储需求
参考链接: Java数据结构与算法之原理分析:https://blog.csdn.net/weixin_42586723/article/details/106993755?>
参考链接: Hash算法及HashMap底层实现原理:https://www.jianshu.com/p/67b825e08d17
参考链接: java常用数据结构集合框架对比总结:https://blog.csdn.net/jarwis/article/details/82667899
参考链接: hashMap、hashTable、ConcurrentHashMap区别:https://www.cnblogs.com/heyonggang/p/9112731.html
转自:Java——数据结构与算法 – 对月当歌 – 博客园
本期内容就到这里啦~以上内容均可在 方包博客「http://fang1688.cn」 网站直接搜索名称访问哦。欢迎感兴趣的小伙伴试试,如果本文对您有帮助,也请帮忙点个 赞 + 在看 啦!❤️
欢迎大家加入方包的「优派编程」学习圈子,和多名小伙伴们一起交流学习,向方包 1 对 1 提问、跟着方包做项目、领取大量编程资源等。Q群「891029429」欢迎想一起学习进步的小伙伴~
另外方包最近开发了一款工具类的小程序「方包工具箱」,功能包括:抖音、小红书、快手去水印,天气预报,小说在线免费阅读(内含上万部热门小说),历史今天,生成图片二维码,图片识别文字,ai伪原创文章,数字摇号抽奖,文字转语音MP3功能...
定期分享 it编程干货
⬇️ 点击链接阅读原文直达 方包博客
评论抢沙发