- 博客(14)
- 收藏
- 关注
原创 【数据结构】 -- 优先级队列的模拟实现 + PriorityQueue常用方法
这种情况下,数据结构应该包含两个最基本的操作,,本文主要介绍PriorityQueue.堆是由一组元素的集合,,将根节点最大的堆称为。,根节点最小的堆称为。
2023-07-24 08:47:07
620
原创 【数据结构】 -- 栈与队列常用方法及简单模拟实现
从上图可以看到,Stack继承了Vector,实现了List接口,Vector与ArrayList类似,都是动态的顺序表,不同的是Vector是线程安全的.栈是一种特殊的线性表,只允许在固定的一端插入或删除数据,进行数据的插入和删除的一端称为栈顶,另一端称为栈底,栈中的数据遵循先进后出的原则。只允许在一端进行插入操作,在另一端进行删除操作的一种的特殊的线性结构,队列具有先进后出的机制,进行插入的一端称为。数据的插入,插入的数据在栈顶。数据的删除,删除的数据在栈顶。这里用LinkedList举例。
2023-07-10 18:33:03
688
1
原创 【数据结构】 -- LinkedList集合常用方法+简单模拟实现链表
上篇介绍了ArrayList常用的方法以及ArrayList的简单模拟实现,通过源码知道ArrayList底层是由数组来存储数据的,由于底层是一段连续的空间,当在中间插入元素的时候,需要把后边儿所有的元素向后移,复杂度为O(N),其效率是非常低的。因此ArrayList不适合做任意位置插入或删除,为了提高效率,Java中提供了LinkedList集合类,即链表结构。LinkedList底层是双向不带头循环链表。
2023-07-07 21:41:27
421
1
原创 【数据结构】 -- ArrayList集合常用方法+简单模拟实现顺序表
java集合框架又被称为容器,是定义在java.util包下的一组接口和其实现类,主要是将多个元素放进一个对象中,以便对这些元素进行管理即增删查改(CRUD)操作。👉使用成熟的集合框架,有助于然我们便捷 快速的编写出有效 稳定的代码👉学习和了解背后的数据结构,可以帮助我们理解集合框架的优缺点,以及使用场景在集合框架中,ArrayList是一个普通的类,实现了一些接口,具体框架图如下:说明:👇👇ArrayList是以泛型的方式实现的,使用的时候必须实例化。
2023-06-29 17:06:15
343
1
原创 StringBuilder 与 StringBuffer
😈😈😈💪💪💪首先我们先看下面这段简单的代码通过下面这三行代码我们来猜一下一共创建了多少个对象?如果我说一共创建了3个对象你信么😁(●’◡’●)如何证明这三行代码一共创建了3个对象呢?查看汇编后翻译成java得到下面代码:👇👇👇当我们在进行一个简单的字符串拼接的时候,以为只是创建了一个对象,其实则在背后 又创建了两个对象,一个是StringBuilder,另一个是toString的返回值如果我们用for 循环进行字符串拼接时候,可想而知 频繁的创建对象所需要的时间并不是很可观。
2023-06-16 11:18:19
138
1
原创 java字符串的不可变性
在了解字符串的不可变性之前 我们先要了解String对象 以及 String字符串在内存中存储的位置。有的说String类是被final修饰的,被final修饰的类我们说这种类是不能被继承的。而value 是被final修饰的数组,说明value 只能引用当前的对象。也有的说是String类中的成员变量value数组是被final修饰的。它把字符串的value以数组的形式给了当前对象str1的value了,当我们定义了一个Sting类型的str1变量的时候,所以字符串它是不可变的.也就是说是被封装的,
2023-06-15 11:42:41
133
1
原创 Comparable与Comparator接口 -- Clonable接口与深浅拷贝
首先,我定义了一个Person类型的引用person用来接收super.clone,那super.clone做了啥,它会把我的person1对象克隆一份,此时我的person对象就有了person1克隆的对象了,(super.clone会调用父类的clone方法,这里的父类指的是Object类,它的clone方法native修饰的,底层是用C或C++代码实现的)它把person1指向 的对象克隆了一份给person2,接着改变了person1中的money对象所指向的对象m,并把它改成了99。
2023-06-03 19:32:12
111
原创 java图书管理系统小练习
这个图书管理系统小练习有两种用户一个是管理员用户,另一个是普通用户针对不同类型的用户会有不同的操作使用简单的代码,实现一个简单的图书管理系统,下面是最终成品部分演示:管理员有管理员的操作,普通用户有普通用户的操作我对于这个图书管理系统划分三个部分,用户,书,操作,最终代码的目录是这个样子:用户相关的放在user文件夹中,操作相关的放在opear文件夹中,书相关的放在book文件夹中,最后我的Test类放在了src文件夹中。
2023-06-02 12:02:38
424
原创 Java-多态
把子类对象传给funcTion方法时用父类引用接收(向上转型),然后调用父类的eat方法,但是当我们看到运行结果的时候,发现调用的是子类重写父类的eat方法!这行代码可以理解为:animal 这个引用是不是引用了Bird这个类的对象,如果为ture将执行下面的代码,如果为false则不执行.在main方法中调用了func2函数并用父类animal引用接收其函数的返回值,这个过程发生了向上转型。:这个是重写的注解,表示这个方法被重写了,(可加可不加),加上注解可以让代码多一层校验。
2023-05-12 16:52:36
248
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人