数据结构——优先级队列(堆) 1.优先队列的构造在PriorityQueue接口中就能观察到实例化一个优先级队列最常用到的三个构造方法先看看接口中都有哪些变量然后就是相关的构造方法关于比较器,我们可以回顾一下java中对象的三种比较方式:①覆写基类的equals。因为用户实现自定义类型都继承自Object类,而Object类中提供了equals方法,我们想要按照对象中的内容来调整,那就得重写基类的equals方法。基本类型的比较大小可以直接用 == ,>,
数据结构—线性表和顺序表 List只是一个接口,而Arraylist是一个实现List接口的类,在用之前要先导包(导包其实idea会在我们用到List接口的时候自动帮我们导包,我们可以直接用)由于List只是一个接口,所以只能通过实例化去调用,在包里有很多的已经封装好的API可以给我们使用,通过实例化后就可以进行访问。2.初步预估扩容大小为原有的1.5倍,在进行扩容前先预计需要扩容的空间大小,按需求进行扩容避免空间过大而扩容失败。扩容机制中默认将原有的空间大小扩大为原来的1.5倍,如果需要的扩容空间超过1.5倍则按需求扩容。
数据结构—栈和队列 选择一个空队列负责实现元素压栈,当要出栈的时候就把队列的除了队尾元素的其他元素都放到另一个队列中,将队尾元素出队列就是实现出栈。后面如果有压栈操作,依旧是将元素压入不为空的队列,即——两个队列总有一个是空的,用来放除了栈顶元素的其他元素。一个栈同样不能实现队列,模拟实现队列需要两个队列,一个栈负责入队列,一个队列负责出队列和获取队头元素。出队列:将栈s1中所有的元素弹出栈,并压栈到栈s2,栈s2的栈顶元素就是模拟队列的队头元素。一个队列不能实现栈,因为队列的特性是头出尾进,要两个队列才能够实现栈。
数据结构—链表的应用(详细过程) 如果大于2,那就得考虑三个引用的初始位置:跑的最慢的引用slow从起点开始,然后记录index位置的引用cur从头结点的下一个节点开始,跑的最快的引用fast在cur前面一步。在明白了插入节点的思路之后,修改指定下标节点元素就是在用三个引用遍历到index位置所在的结点,然后将slow引用的后继结点改为要更改的结点node,再将node的后继结点改为fast即可。(当然,要记得进行下标合法性判断)在插入一个元素作为头结点的同时,链表的尾节点和头结点在同一起跑线上,后续有元素插入都是插入到尾节点后面,所以。
数据结构—时间复杂度和空间复杂度 如上述例2,用到了常数个额外空间,空间复杂度为O(1),例5动态开辟了N个额外空间,为O(N),例6开辟了N个栈帧空间,N个栈帧空间里用了常数个额外空间,空间复杂度为O(N)add 方法中基本操作次数是n次而且n是常数,所以用大O渐进表示法add的时间复杂度为:O(1)大O渐进表达式为O(1),仔细看程序的基本操作次数为100,常数的大O表达式为O(1)冒泡排序的时间复杂度计算为:F(N) = n²/2-n/2。递归的次数为2ⁿ ,大O渐进表达式为O(2ⁿ)斐波那契递归次数为N,大O表达式为O(N)
JavaSE—String类 在此前我们谈到数据类型和变量的时候了解到了String类,但是没有并没有详细地讲到String类的应用以及jvm提供许多相关API的应用,这篇博客就来了解一下String类以及相关API的应用。String类的各种修改操作都是通过调用新的对象来进行修改(new一个新的对象接受修改对象的属性,在新的对象上对这些属性进行修改,最后将新的对象作为返回类型替换旧的对象)==在比较引用类型变量的时候比较的是地址(如果地址相同说明是同一个对象,返回值会是true),比较基本类型变量的时候比较的是内置储存的值是否一样。
JavaSE—方法的使用 方法其实就是一段代码片段,与C语言中的函数十分相似,两者的相似处集中体现在:1. 是能够模块化的组织代码当代码规模比较复杂的时候).2. 做到代码被重复使用一份代码可以在多个位置使用3. 让代码更好理解更简单4. 直接调用现有方法开发不必重复造轮子二、方法的定义方法的语法格式为:修饰符 + 返回参数类型 + 方法名(参数类型 形参名){[return参数];注意事项1.修饰符:现阶段直接使用固定搭配2.返回值类型。
编程小白初学JavaSE——数据类型与变量 又到了一个新阶段,又可以和看客佬爷们一起学习新的知识啦! 既然我们的编程对常量有所需求,那么常量的应用也意味着常量要带有特定的数据类型才能实现编程需求,下面就一起来学习一下——字面常量的分类。 在这之前,肯定会有小伙伴说:“唉,不就是常量分类嘛,学习C语言的时候就已经了解过啦”。哎,说对了,但也没完全说对。 因为在C语言中,字符常量是包含了字符串常量在内,也就是概念上来说字符类型是个大集合,而字符串常量是个小集合且含于字符常量。 在Java中多了一个空常量还有布尔常量,下面我们就来展开一一了
C语言三子棋 在完成这个小游戏之后,让我们来看看为了完成这个小游戏我们都用到了什么知识吧!例如,贯彻整个游戏程序要用到的字符二维数组,定义棋盘规格的行列要用到的整形变量,在完成下棋指令传入以及判断游戏结果返回的字符变量。要做到以上几点,我们运用的是C语言中一大实用的工具——函数调用。在需要完成打印操作还有数入数据时,要用printf和scanf语句之前要先引用库函数<stdio.h>