Java数据结构
文章平均质量分 94
数据结构(data structure)是带有结构特性的数据元素的集合,它研究的是数据的逻辑结构和数据的物理结构以及它们之间的相互关系,并对这种结构定义相适应的运算,设计出相应的算法,并确保经过这些运算以后所得到的新结构仍保持原来的结构类型。简而言之,数据结构是相互之间存在一种或多种特定关系的数据元
馒头警告
这个人很懒,什么都没留下
展开
-
Java 泛型进阶
一般的类和方法,只能使用具体的类型要么是基本类型,要么是自定义的类。如果要编写可以应用于多种类型的代码,这种刻板的限制对代码的束缚就会很大。-----来源《Java编程思想》对泛型的介绍。泛型是在JDK1.5。? 用于在泛型的使用,即为通配符虽然在这种情况下,当前数组任何数据都可以存放,但是,更多情况下,我们还是希望他只能够持有一种数据类型。而不是同时持有这么多类型。所以,泛型的主要目的:就是指定当前的容器,要持有什么类型的对象。让编译器去做检查。此时,就需要把类型,作为参数传递。需要什么类型,就传入什么类原创 2023-06-28 15:36:49 · 259 阅读 · 4 评论 -
Java中的反射、枚举以及lambda表达式
Java的反射(reflflection)机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对任意一个对象,都能够调用它的任意方法和属性,既然能拿到那么,我们就可以修改部分类型信息;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射(reflflection)机制。枚举是在JDK1.5以后引入的。主要用途是:将一组常量组织起来,在这之前表示一组常量通常使用定义常量的方式:Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接原创 2023-06-28 14:00:00 · 352 阅读 · 5 评论 -
【Java】Map和Set
因此只要表中有一半的空位置,就不会存在表满的问题。,首先对关键码集合用散列函数计算散列地址,具有相同地址的关键码归于同一子集合,每一个子集合称为一个桶,各个桶中的元素通过一个单链表链接起来,各链表的头结点存储在哈希表中。虽然哈希表一直在和冲突做斗争,但在实际使用过程中,我们认为哈希表的冲突率是不高的,冲突个数是可控的,也就是每个桶中的链表的长度是一个常数,所以,通常意义下,我们认为。对元素的关键码进行同样的计算,把求得的函数值当做元素的存储位置,在结构中按此位置取元素比较,若关键码相等,则搜索成功。原创 2023-06-27 14:00:00 · 326 阅读 · 5 评论 -
巧用Java轻松实现数据结构七大排序算法
排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。冒泡排序、选择排序、插入排序、希尔排序、堆排序、归并排序、快速排序原创 2023-06-26 14:00:00 · 125 阅读 · 10 评论 -
Java对象的比较
目录一、 PriorityQueue中插入对象二、元素的比较1、基本类型的比较2、对象比较的问题 三、对象的比较 1、覆写基类的equals 2、基于Comparble接口类的比较3、基于比较器比较4、三种方式对比四、集合框架中PriorityQueue的比较方式 此时我们会发现:在Java中,基本类型的对象可以直接比较大小。 2、对象比较的问题 我们现在来试一下比较card类: 根据代码的运行结果我们会发现:三、对象原创 2023-06-25 15:36:30 · 233 阅读 · 4 评论 -
【Java】PriorityQueue--优先级队列
前面介绍过队列,队列是一种先进先出(FIFO)的数据结构,但有些情况下,操作的数据可能带有优先级,一般出队列时,可能需要优先级高的元素先出队列,该中场景下,使用队列显然不合适,比如:在手机上玩游戏的时候,如果有来电,那么系统应该优先处理打进来的电话.在这种情况下,数据结构应该提供两个最基本的操作,一个是返回最高优先级对象,一个是添加新的对象。这种数据结构就是优先级队列(Priority Queue)。原创 2023-06-24 15:12:22 · 12568 阅读 · 10 评论 -
Java实现二叉树
由于现在大家对二叉树结构掌握还不够深入,为了降低大家学习成本,此处手动快速创建一棵简单的二叉树,快速进入二叉树操作学习,等二叉树结构了解的差不多时,我们反过头再来研究二叉树真正的创建方式。我们先判断头指针root是否为null,如果不是null则将其进入队列,然后将该元素弹出并打印,命名为top,如果top存在左右子树,那么将其左右子树依次入列,当队列中元素不为空时一直重复上述操作,当队列为空,则层序遍历完成。层上的节点,接着是第三层的节点,以此类推,自上而下,自左至右逐层访问树的结点的过程就是层序遍历。原创 2023-05-04 20:18:29 · 1183 阅读 · 12 评论 -
手把手教你Java实现栈和队列
C选项是不可能做到的,因为如果按照31的顺序出栈,那么2必然先比1出栈。D选项则是先把12入栈,再将34轮流进行出栈入栈的操作后,再将12出栈。B选项是先将1入栈,再将234轮流入栈出栈,最后将1出栈得到的结果。:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出。我们可以发现,A选项中是先将1入栈再出栈,再将234依次入栈后出栈所得到的结果。综上,我们可以得知:通过栈的实现,我们可以将递归转化成循环。我们可以根据栈的先进后出的特性来对其进行分析。原创 2023-04-25 19:46:16 · 836 阅读 · 10 评论 -
LinkedList与链表
实际中链表的结构非常多样,以下情况组合起来就有8种链表结构: 2. 带头或者不带头 3. 循环或者非循环 虽然有这么多的链表的结构,但是我们重点掌握两种:无头双向链表:在Java的集合框架库中LinkedList底层实现就是无头双向循环链表。 那么现在,我们可以利用现有的知识,来模拟完成一个链表的实现过程:三、LinkedList的使用1、什么是LinkedList 关于LinkedList的具体介绍,我们可以看一下它的官方文档;LinkedList 的官方文档 在集合框架中,Link原创 2023-04-18 12:00:00 · 175 阅读 · 8 评论 -
ArrayList与顺序表
线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列...的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。虽然提供的方法比较多,但是常用方法如下所示,需要用到其他方法时,可以自行查看。是一个动态类型的顺序表,即:在插入元素的过程中会自动扩容。底层是一段连续的空间,并且可以动态扩容,是一个。原创 2023-04-15 10:08:54 · 393 阅读 · 18 评论 -
Java初识泛型
Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。原创 2023-04-09 11:52:33 · 623 阅读 · 16 评论 -
时间复杂度和空间复杂度
说到时间复杂度和空间复杂度,那么就不得不提及一下算法效率这个概念了,那么什么是算法效率呢?时间效率被称为时间复杂度,而空间效率被称作空间复杂度。时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间,在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。所以我们如今已经不需要再特别关注一个算法的空间复杂度。原创 2023-02-18 18:38:08 · 165 阅读 · 22 评论