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——数据结构与算法 - 对月当歌 - 博客园
Java——数据结构与算法相关推荐
- Java 数据结构与算法系列之冒泡排序
一.前言 相信大部分同学都已经学过数据结构与算法这门课了,并且我们可能都会发现一个现象就是我们所学过的数据结构与算法类的书籍基本都是使用 C 语言来写的,好像没见过使用 Java 写的数据结构与算法. ...
- Java数据结构与算法——树(基本概念,很重要)
声明:码字不易,转载请注明出处,欢迎文章下方讨论交流. 有网友私信我,期待我的下一篇数据结构.非常荣幸文章被认可,也非常感谢你们的监督. 前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督 ...
- Java数据结构与算法——插入排序
声明:码字不易,转载请注明出处,欢迎文章下方讨论交流. 前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督.本篇文章介绍排序算法中插入排序算法,包括插入排序的思路,适用场景,性能分析,ja ...
- Java数据结构和算法(六)——前缀、中缀、后缀表达式
前面我们介绍了三种数据结构,第一种数组主要用作数据存储,但是后面的两种栈和队列我们说主要作为程序功能实现的辅助工具,其中在介绍栈时我们知道栈可以用来做单词逆序,匹配关键字符等等,那它还有别的什么功能吗 ...
- Java数据结构和算法(一)——简介
本系列博客我们将学习数据结构和算法,为什么要学习数据结构和算法,这里我举个简单的例子. 编程好比是一辆汽车,而数据结构和算法是汽车内部的变速箱.一个开车的人不懂变速箱的原理也是能开车的,同理一个不懂数 ...
- JAVA数据结构与算法【简单介绍】
前几天去面一个大厂,面试官特别好,面试官说到,我们的学习不能本末倒置,数据结构和算法是程序的基础,如果数据结构你没有学好,你真正意义上不算会写代码.你的代码是各处粘贴,杂乱无章的. 由于现在大多用JA ...
- java算法概述,Java数据结构与算法基础(一)概述与线性结构
Java数据结构与算法基础(二)递归算法 Java数据结构与算法基础(一)概述与线性结构 学习目的:为了能更顺畅的读很多底层API代码和拓宽解决问题的思路 一.数据结构概述 1.数据结构是什么?数据与 ...
- 【笔记】Java数据结构与算法
[笔记]Java数据结构与算法 文章目录 [笔记]Java数据结构与算法 1.八大排序应用场景 2.未完待续-- 1.八大排序应用场景 冒泡排序:优化后的冒泡排序可用于当数据已经基本有序,且数据量较小 ...
- 二叉树 BinaryTree (先序、中序、后序遍历 节点查找、插入、删除 完整类) Java数据结构与算法
二叉树 BinaryTree (先序.中序.后序遍历 节点查找.插入.删除 完整类) Java数据结构与算法 源代码: view plain /** * * @author sunnyykn */ i ...
- Java数据结构和算法(四)--链表
日常开发中,数组和集合使用的很多,而数组的无序插入和删除效率都是偏低的,这点在学习ArrayList源码的时候就知道了,因为需要把要 插入索引后面的所以元素全部后移一位. 而本文会详细讲解链表,可以解 ...
最新文章
- 2个月做出一款AI项目?这些学生在DeeCamp上决出两个总冠军
- 阿里九峰:云计算开启的基础设施新时代
- 两个大数(整数)相加模板
- [转] ROS-I simple_message 源码分析:MessageManager
- Linux学习笔记(十五)用户和用户组
- Uboot中start.S源码的指令级的详尽解析(转)
- 查询数据库中所有表名
- SQLite数据库【转有改】
- 20191012:快速排序
- 我的精神家园——陈皓(@左耳朵耗子)专访
- Spring Cloud Euraka( 服务注册中心)
- ie8和ie11的html代码生成,ie8升级ie11-IE11,IE8
- 【工具分享】一个阿里出品的免费在线图表制作工具(ChartCube 图表魔方)
- android ViewPager2的使用教程
- ESP32 HTTP Client接口使用
- 10个最好的免费FTP客户端
- CKEditor/CKFinder升级心得
- Bash玩转脚本3之几个指令有趣的筛选京东评价
- 使用api制作我的足迹地图
- 学习笔记:Recyclerview、SwipeRefreshLayout、Cardview的使用
热门文章
- 微信扫一扫服务器地址,微信扫一扫
- 将beyond compare设置为svn的代码比较工具
- IDEA报错解决:Cannot resolve com.oracle:ojdbc7:12.1.0.2或‘com.oracle:ojdbc7:12.1.0.2‘ not found
- 数据挖掘关联规则挖掘之FpGrowth算法
- 挂服务器刷屏微信,谁知道微信群刷屏代码啊,跪求
- Tomcat下载安装以及配置(详细教程)
- java+spring+vue基于ssm的员工公寓后勤管理系统
- 金山词霸2005开启后导致桌面刷新的问题
- windows内核和Linux内核区别
- 计算机两个基准键用户来定位,键盘与指法基准键位练习