riorityueue是线性结构吗的人都搞错了!

其实这个问题的完整描述是:Java 中的 PriorityQueue 实现,其数据的逻辑结构是线性结构吗?其数据的物理结构又是什么?

估计很多人的答案是:PriorityQueue 是线性结构,因为 PriorityQueue 是优先级队列的实现,队列不就是线性结构的吗?但在PriorityQueue 的实现中,其数据的逻辑结构是树形结构,其物理结构是顺序存储结构。

要弄明白这个问题,我们必须先弄明白什么是数据的逻辑结构,什么是数据的物理结构。

顾名思义,数据的逻辑结构指的是数据是怎么组织起来的,数据的物理结构指的是数据是怎么存储的。 数据的逻辑结构与物理结构,是数据结构两个非常重要的要素。但你知道数据有几种逻辑结构、几种物理结构吗?

数据的逻辑结构指的是数据是如何组织起来的,反映数据元素之间的逻辑关系,它更加贴近于现实。 例如现实生活中树干与树叶就是树形结构,排队的队伍就是线性关系。

数据的逻辑结构一般有四种,分别是:线性结构、集合结构、树形结构、网络结构。 其中,我们把集合、树形结构、网络结构统称为非线性结构。

线性结构指的是数据结构中的元素存在一对一的相互关系。 例如:数组是一种线性结构,其下标与元素一一对应。链表也是一种线性结构,其元素之间是一个接着一个的。生活中有很多类似的例子,例如排队买票的队伍就是一个线性结构。超市里排布整齐的商品,也是一个线性结构。

集合结构指的是元素之间除了「同属一个集合」的关系之外,再无其他关系。 例如数学中的整数就是一个集合,所有小数也是一个集合。

树形结构指的是元素存在一对多的关系。 例如水果有香蕉、草莓、西瓜等,这种逻辑结构就是树形结构。

网络结构指的是元素存在多对多的关系。 网络结构也叫做网状结构,它是多对多的关系。比如城市的交通网络,每栋房子与其他房子都有许多条路。

数据的物理结构指的是数据是如何存储的,反映数据的存储结构。 数据的存储结构分为四种:顺序存储、链式存储、索引存储、散列存储。 一般我们将这四种物理结构分为顺序存储结构与非顺序存储结构。顺序存储是顺序存储结构,链式存储、索引存储、散列存储均属于非顺序存储结构。

数据的顺序存储结构的特点是:借助元素的相对位置来表示数据元素之间的逻辑关系。非顺序存储的特点是:借助指示元素存储地址的指针表示数据元素之间的逻辑关系。

顺序存储指的是数据在内存当中是按照顺序存储的,逻辑结构上相邻的元素在物理结构上也是相邻的。Java 中的 ArrayList 就是通过顺序存储的方式实现的。

链式存储指的是元素之间的逻辑顺序,并不是通过内存顺序来分配的,而是通过一个引用组织起来的。也就是说,逻辑上相邻的元素,在物理存储位置上是不相邻的。Java 中的 LinkedList 就是通过链式存储的方式实现的。

索引存储指的是元素之间的逻辑关系,是通过一张索引表来存储的。这张索引表有很多个索引项,每个索引项存储两个信息:关键字、数据存储地址。我们通过关键字可以找到对应的数据存储地址。这就像书籍的目录一样,关键字就是章节名,数据存储地址就是页码。我们通过章节名可以快速地找到对应的页码,从而快速地找到书籍对应内容。

散列存储也称之为哈希存储,其与索引存储非常类似,都是通过索引值以及对应的值来实现快速查找。唯一不同的区别是,索引存储会对索引值进行哈希。应该说散列存储是索引存储的一种更加复杂的实现。

看到这里,我们对数据的逻辑结构、物理结构已经有了基本的认识,也知道它们的常见种类。那我们到底如何去判断它们是属于哪种逻辑结构、哪种物理结构呢?

拿 Java 中对于优先级队列的 PriorityQueue 实现为例。通过阅读源码我们得知其底层使用了二叉堆实现,而二叉堆本身其实就是一颗二叉树。即对于 PriorityQueue 来说,其数组最终是通过下图这种逻辑结构组织起来的,因此 PriorityQueue 的逻辑结构是树形结构。

从 PriorityQueue 的源码,我们可以知道 PriorityQueue 的数据最终是通过一个对象数组存储的,而数组的物理结构是顺序存储的。因此对于 PriorityQueue 来说,其物理结构是顺序存储结构。

通过 PriorityQueue 这个例子,我们可以总结出判断数据的逻辑结构、物理结构的思路:判断逻辑结构,要看数据是如何组织起来的。要判断物理结构,则是要看数据最终是如何存储的。

我们再用这个办法来判断一下 TreeMap 这个类。

TreeMap 是 Java 中非常经典的实现,其底层是基于红黑树的实现,即其最终会将所有数据组织成一颗红黑树,因此 TreeMap 的逻辑结构是树形结构。通过阅读 TreeMap 的源码,我们知道 TreeMap 的数据最终是通过 Entry 这个类存储的,因此 TreeMap 的物理结构是链式存储结构。

最后我们拿比较复杂的 LinkedBlockingQueue 来分析一下。

很多人会说队列就是一种特殊的数组,而数组是顺序存储的,因此队列就是顺序存储的。如果将这个结论套用在 LinkedBlockingQueue 上,那是否可以得出同样的结论,即 LinkedBlockingQueue 也是顺序存储的呢?

前面我们说过:不要用直觉去判断,而要根据定义去判断。 即判断数据的逻辑结构、物理结构的思路是:判断逻辑结构,要看数据是如何组织起来的。要判断物理结构,则是要看数据最终是如何存储的。

LinkedBlockingQueue 是 Java 中的阻塞队列实现,其最终会将数组组织成一个队列,因此其逻辑结构上属于线性表。通过阅读源码,我们可以知道 LinkedBlockingQueue 的元素是存储在 Node 节点上的,因此 LinkedBlockingQueue 的物理结构属于链式存储。

本文一开始通过 PriorityQueue 的例子,引入了逻辑结构与物理结构这个话题。接着介绍了四种逻辑结构:线性表、集合、树状结构、网络结构。

紧接着介绍了四种物理存储结构,分别是:顺序存储、链式存储、索引存储、哈希存储。

接着通过 PriorityQueue 的例子,得出判断数据的逻辑结构和物理结构的思路:判断逻辑结构,要看数据是如何组织起来的。要判断物理结构,则是要看数据最终是如何存储的。 最后再通过 TreeMap 和 LinkedBlockingQueue 这两个例子,带大家实践判断思路。

THE END
0.军队文职物理真题答案C.结构合理,视野开阔,承受冲击能力强 D.便于雨水流走 67.盛水的烧杯里有一只盛水的试管,加热烧灯使水沸腾。保持烧杯中水始终沸腾,试管里的水能否沸腾?() A.不会沸腾 B.烧杯里液体的液面超过试管液体液面时,才可能沸腾 C.可以沸腾 D.用急火加热时,才可能沸腾 68.对待传统文化的正确态度是:() A.全部继承 B.全部抛弃 C. jvzquC41yy}/|somu0ipo8puvm563<8:0jznn
1.中国科学技术大学叶树集中文主页水溶液表面/界面与很多的物理、化学、环境、大气和生物等过程密切相关。界面水能够直接影响和控制生物分子吸附、细胞膜形成、蛋白质折叠、蛋白质活性、胶束组装、湿润、离子和溶质在生物膜界面上的传输与交换过程以及材料的生物相容性。本研究致力于理解界面水分子的结构与动力学、以及界面亲疏水作用,界面水与界面分子行为jvzquC41hcivn}~0wuzd0niw0et0{nxjwlo0|qdEP1kit45567:1unuv1
2.专题|军事装备防腐科技进展之面面观人们逐渐认识到低表面能材料与微纳表面粗糙结构是超疏水性质形成的主要原因,同时人工制备仿生超疏水表面以实现特定的应用价值成为该领域研究的热点。目前已知的超疏水表面制备方式很多,根据其自身性质的不同主要可以区分为以下 3 大类。即:模板法、自下而上(Bottom—up)的化学合成法与自上而下(Top—down)的物理jvzq<84yyy4fexwt0qxh0ls1fjZKFJTJCPM0zrszk|ozwjs1mgvvsrpcp1813@226/7:1<6:60nuou
3.中考化学复习知识点15篇(1)知道电解水的实验现象(了解气体的体积比),水的组成和电解水的反应表达式,两种气体的鉴别。 (2)知道水的物理性质,化学变化的实质。水的组成,构成。分子和原子的区别与联系。 (3)水的化学性质,实验现象以及反应表达式。 (4)水的污染和净化,其中污染的原因,和净化的'方法。 jvzquC41yy}/qq6220ipo8jqpmlcx4793624;3jvor
4.第三章第八节晶体宇宙与光涡宇宙太阳等气态行星恒星的旋转运动会产生;电磁场的内部同时会产生很小的挠场;金字塔或者圆锥形会利用宇宙信息的形状的全息性,也吸收粒子做左旋运动;甚至涡旋形状的有空腔的物体(比如甲壳虫的翅膀上的微型圆锥形空腔),可以做成悬浮板等;水晶等特别规律的原子分子排布构成的物体;结构水、苯环这些都会产生或大或小的挠场。jvzquC41yy}/fxzdcp4dqv4pqvk0:=>;99=678
5.纳米人近日,中国科学院上海应用物理研究所司锐研究员,湖南大学马超教授,山东大学贾春江教授报道了采用初湿浸渍法制备了二氧化硅负载铂-铋催化剂(PtBi–SiO2),由于形成了氧化态的PtxBiyOz簇合物,其具有良好的抗烧结性,然后将其用于催化CO氧化。 本文要点: 1)Bi物种的掺杂在Pt和Bi(Pt−[O]x−Bi结构)物种之间建立了一jvzq<84yyy4ocwtgt0tfv8xjqyoohx254/938:90jvsm
6.大单元教学概念范例6篇物理知识结构式物理学习内容中的基本概念、基本规律、基本观念、基本方法的组织形式和相互联系。构建物理知识结构网络,是把知识、规律和方法进行高度提炼和简缩。由知识点连成知识线,由线组成面,然后连成知识网。 物理知识结构体系的构建,一般分为两个阶段方式构建。首先弄清概念、规律的逻辑体系,然后明确概念规律、观念jvzquC41yy}/dj~ycvii0ls1jcuxgw446:6527mvon
7.一篇论文背后的故事翁羽翔螺旋三聚体光谱大约半年后,高加力教授第二次来到物理所,同样在咖啡屋,只是演讲的主角换成了高老师。高老师先展示了由24万多个原子构成的LHCII三聚体、磷脂双层膜和水分子构成的起始模型,然后演示了三聚体在高温下存在的一个开合运动,以及界面结合处水分子随温度升高逐渐脱落的过程。当看到水分子的确随着温度的升高从界面处脱落,这一jvzq<84m0uooc7hqo0io1jwvkerfa?7:;6:16@6a39
8.第3分会场:碳基催化材料与碳催化过程2005年于中国海洋大学获得博士学位,2005-2011年先后在德国锡根大学和马普学会微结构物理研究所做博士后研究,2011年回国到山西煤炭化学研究所工作至今。入选中国科学院人才计划(终期结题优秀)、科技部人才计划、国家百千万人才工程等,享受国务院政府特殊津贴。主要研究领域为多相催化、纳米催化、原子层沉积方法及应用等。jvzquC41yy}/e|u0qtm/ew4oggzjpp4;vjIbtktpEczbn‚xku1g37A;0jvsm
9.高校实验室安全检查整改报告(通用15篇)七、下班前,实验室人员必须检查操作的仪器及整个实验室的门、窗和不用的水、电,并确保关好。 高校实验室安全检查整改报告 2 实验室的安全非常重要,有时可能会发生、灼伤、触电等事故,为了避免事故的发生,保障在校师生的安全,为此,对我校物理实验室进行全方位多层次的安全隐患排查。 jvzq<84yyy4vpsx0eqs0hjsygp}bpp4|idm0497433823<6972e6;B52544ivvq
10.建造师倒数第三!监理倒数第二!细数工程项目必备的14个证书,你有几具体包括:监理工程师、一级注册建筑师、环境影响评价工程师、注册核安全工程师、注册设备监理师、一级建造师、注册土木工程师、注册电气工程师、注册公用设备工程师、注册化工工程师、注册环保工程师、一级注册结构工程师、注册城乡规划师、一级造价工程师。jvzquC41unjt0o|ziz4dqv4ctvodnnx145<6;A