Java——数据结构与算法_java数据结构和算法-程序员宅基地

技术标签: 算法  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——数据结构与算法 - 对月当歌 - 博客园

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_64359609/article/details/124174183

智能推荐

matlab 调速系统试验,实验三 开环直流调速系统Matlab仿真-程序员宅基地

文章浏览阅读1.2k次。开环直流调速系统Matlab仿真实训三 晶闸管开环直流调速系统的MATLAB仿真实训一、实验实训目的1.学习并掌握晶闸管开环直流调速系统模型建立及模型参数设置的方法和步骤。2.熟悉并掌握系统仿真参数设置的方法和步骤。3.学会利用MATLAB软件对系统进行稳态与动态计算与仿真。4.巩固并加深对晶闸管开环直流调速系统理论知识的理解。二、实验实训原理及知识准备1. 晶闸管开环直流调速系统的原理图..._开环直流调速系统的matlab仿真

iscroll部分机型高度计算错误原因--transform属性_iscroll transform-程序员宅基地

文章浏览阅读1.7k次。iscroll在部分手机上做下拉刷新的时候,高度会计算错误,显示为顶部部分高度被隐藏。当时使用版本是4.2.2。通过调试发现是iscroll源码的bug,在此Mark下,懒得提交Issue。iscroll4均有这个错误,在iscroll5里面已改正,但是只是在计算高度时做了防御式编程,根本原因估计还是没找到。图方便可以直接使用iscroll5,只是api变了。不想升级,可以按我的方式稍微修改下_iscroll transform

graphql----java使用_graphql.field-程序员宅基地

文章浏览阅读1.6k次。前言前一篇,已经讲了go语言中的使用。那么java端如何使用。1.定义用户结构public class User { private int id; private int age; private int sex; private String name; private String pic; // get set方法}_graphql.field

Linux的进程查看命令ps与top详解_psr top-程序员宅基地

文章浏览阅读1w次。1、ps -eFHUID进程所有者的用户标识、PID进程的进程标识、PPID父进程的进程标识、SZ进程的核心映像的页面大小、RSS进程的实际内存(驻留集)大小(单位是 1KB)、PSR绑定内核线程的处理器(如果有)的逻辑处理器号,对一个进程来说,如果它的线程全都绑定到同一处理器上,则显示该字段、STIME进程的启动时间、TTY进程的控制工作站、TIME进程的执行时间总和、CMD包含命令名_psr top

java.lang.ClassNotFoundException: ${jdbc.driverClassName}_caused by: java.lang.classnotfoundexception: ${jdb-程序员宅基地

文章浏览阅读3.4k次,点赞3次,收藏6次。错误日志错误分析一 . 配置文件中 <context:property-placeholder location=“classpath:db.properties” /> 标签没有写这个错误相信看完错误日志大家都能找的到, 就不多赘述了. 错误的原因就是, 如果没有加上面的标签, 那么下面配置文件代码中的property标签中的value属性的值就仅仅是一个string类型的..._caused by: java.lang.classnotfoundexception: ${jdbc.driverclassname}

h5页面引入java,H5页面调用原生activity-程序员宅基地

文章浏览阅读931次。原生的项目页面调用了第三方控件,并且访问页面都正常。现在将H5嵌入原生后,apk入口访问H5页面,从H5页面点击菜单调用原生activity,没有第三方控件的页面可以打开,有第三方控件的页面打开应用白屏闪退。调用原生activity代码如下:var activity = plus.android.runtimeMainActivity();var Intent = plus.android.imp...

随便推点

层级重音分析与预测方法研究_crf预测重音-程序员宅基地

文章浏览阅读357次。语音合成技术主要有三部分:1、文本分析;2、韵律建模;3语音合成文本分析文本分析处理流程:输入文本→文本预处理→文本规范化→分词→词性标注→字音转换→韵律预测→输出拼音节奏等信息文本预处理包括删除无效符号,断句,内码转换等。文本规范化的任务就是将文本中的这些特殊字符识别出来,并转化为一种规范化的表达。字音转换的任务是将待合成的文字序列转换为对应的拼音序列,即告诉后端合成器应_crf预测重音

在Python里的字符串、列表、元组、集合之间转换的一个不为人知的细节和bug_python list转化为set时长度发生变化-程序员宅基地

文章浏览阅读536次。首先看如下代码:a = ['0234','abcd']seta = set(a)b = ['0234']setb = set(b)c = ('0234','abcd')setc = set(c)d = ('0234')setd = set(d)e= tuple(b)sete = set(e)print(type(a), ' , ', a,' , ',seta)..._python list转化为set时长度发生变化

计算机专业专业课代号408,计算机专业考研你一定要知道的事情!-程序员宅基地

文章浏览阅读4.3k次。1.计算机专业专业课比较难,建议考研最好是本专业或者相关专业,有一定的基础,跨考有一定的难度。2.计算机考研主要分为学硕和专硕两个方向。学硕为计算机技术应用,专硕为计算机应用和软件工程。3.考试科目我这里只说学硕(专硕每个学校规定不同):一般情况下,初试为公共课+专业课。公共课考英语(学硕为英语一,难度较大)和政治,各占100分。专业课一考数学一,相对较难。专业课二考计算机专业基础。计算机专业基础..._408是哪个专业

使用uedior关于iframe,样式问题【已解决】-程序员宅基地

文章浏览阅读117次。网站需要主题切换,但是iframe里读取不到改变后的css变量看文件只有一个我需要一个js的位置,能添加js到ifram

大话:边缘计算、雾计算、云计算_云计算 雾计算-程序员宅基地

文章浏览阅读7.8k次,点赞9次,收藏50次。云计算一种利用互联网实现随时随地、按需、便捷地使用共享计算设施、存储设备、应用程序等资源的计算模式。云计算系统由云平台、云存储、云终端、云安全四个基本部分组成,云平台从用户的角度可分为公有云、私有云、混合云等。通过从提供服务的层次可分为:基础设施即服务(Iaas)、平台即服务(Paas)和软件即服务(Saas)通过将应用部署到云端后,可以不必再关注那些令人头疼的硬件和软件问题,它们会由云服务商去解..._云计算 雾计算

STM32-自学笔记(10.使用GPIO和SysTick定时器实现按键扫描)_stm32定时器扫描按键-程序员宅基地

文章浏览阅读5.5k次,点赞3次,收藏23次。按键抖动的原因:通常按键所用的开关都是机械弹性开关。当按键触点闭合或者断开时,由于机械触点的弹性特点,一个按键开关在闭合时不会马上就稳定的接通。在断开时也不会一下子就彻底断开。而是在闭合和断开时伴随了一系列抖动。按键消抖的方法:硬件消抖和软件消抖硬件消抖:利用电容的充放电特性对抖动过程中产生的电压毛刺进行平滑处理。软件消抖:通过延迟程序过滤,通过延迟来过滤掉抖动时间。..._stm32定时器扫描按键