Java——数据结构与算法

一.数据结构:
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功能...

送福利!关注下方的公众号:优派编程回复资料,即可获得软件app下载资源和python、java等编程学习资料!

   
点击卡片关注「优派编程」
定期分享 it编程干货

 ⬇️ 点击链接阅读原文直达 方包博客

分享到:
赞(0)

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

免责声明:本站为非盈利性个人博客,博客所发布的一切源码、软件的文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。

本站信息来自网络,版权争议与本站无关,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。访问和下载本站内容,说明您已同意上述条款。本站不贩卖软件,所有内容不作为商业行为。

如果有侵犯版权请发送邮箱至619018020@qq.com,我们会在24小时之内处理。

Copyright © 2019-2021知识学堂