- 博客(34)
- 收藏
- 关注
原创 Java中File类及关于InputStream和OutputStream的基本用法
Java中的File类的基本使用以及关于InputStream和OutputStream。
2022-07-05 09:03:18
4614
原创 JDK中的HashMap
哈希表保存数据:HashMap保存数据时是使用<K,V>(键值对)保存的,键值对是一种映射关系,一个Key对应一个Value值。K值具有唯一性,当我们保存相同的K值时,Value值会被新的Value所覆盖,不会存在有两个相同的K值。JDK中哈希表的底层原理:HashMap查找的效率极高,时间复杂度O(1),这是一个非常高的查找效率,哈希表也是典型的用空间来换时间的一个数据结构。首先我们要明白哈希表底层是怎么实现的。在JDK8中,哈希表的底层是数组+链表/红黑树。当达到一定条件的时候链
2022-05-30 13:31:12
981
原创 优先级队列解决TopK问题
首先我们需要了解什么是TopK问题,那就是给你一个一组数据,数据可能很少或者很多,让你找到前K小或者前K大的数据。当数据比较少的时候我们可以使用暴力解法,那就是直接对整个数据进行排序处理,然后取前K个元素那就是答案,但是当数据非常多的时候,效率也会变得相对比较慢。以上所述,直接排序对数据量很大的场景是不太合适的,所以我们利用优先级队列来解决TopK问题,我们设想一下,我们要找前K大的数据,这时候我们的优先级队列要实现一个大堆还是一个小堆?答案是小堆,当我们把题目要求K个元素放入堆中之后,就形成了一个..
2022-05-23 13:40:02
628
原创 用Java实现二叉树的遍历
树是一种非线性结构的数据结构,有一个点没有前驱,被称为根节点,它可以有多种变化,普通二叉树,N叉树,二叉搜索树(BST),红黑树(RBTree),B树等等,上述所说的树中,普通二叉树就算是比较简单的数据结构。二叉树的存储:二叉树的存储方式分为:顺序存储和类似于链表的链式存储。二叉树的链式存储是通过一个一个的节点引用起来的,常见的表示方式有二叉和三叉表示方式。我们使用孩子表示法来给大家解释一下class TreeNode { public char val;//数据 pu
2022-05-20 10:21:17
6898
原创 栈和队列
栈:栈是一个比较简单的数据结构,栈和普通数组和链表的区别就是,栈有特定的出入方式,普通数组和链表可以在任意位置进行增删改,而栈这个数据结构在增加元素的时候需要从栈顶进,也要从栈顶出,而且要符合先进后出(LIFO)的规则。假如我把A B C同时压入栈中,你只能拿出C才能拿出B最后才能拿出A,不可以一开始就把B和A出栈,所以栈就是在普通数组和链表的结构上对出入规则做出了一定的约束。一般我们用数组来实现栈,我们只需要对数组的最后一个元素进行操作,出栈的时候我们只需要进行逻辑删除,时间复杂度就是O(1),入栈也
2022-05-18 10:47:49
197
原创 Java中的抽象类和接口
抽象类:Java中的抽象类在class之前加 abstract关键字代表这个类是一个抽象类,抽象类和普通类没有太大的区别,只是抽象类中多了抽象方法,抽象方法也是使用abstract关键字声明,抽象方法只有方法声明,没有方法体;你也可以在抽象类中定义成员变量,跟普通类的定义方式没有本质上的区别,所以我们把抽象类理解成普通类的"超类"。抽象类一般作为父类来派生子类,子类如果是一个普通类,那子类就要重写抽象类的抽象方法。但是如果子类也是抽象类则不用重写。虽然抽象类和普通类的区别只是在抽象类中多了抽象方
2022-05-12 18:11:43
163
原创 Java中的String类
String的值不可以变:Java中的String类型不属于八大基本数据类型,而是一个引用数据类型,所以在定义一个String对象的时候如果不直接赋值给这个对象,它的默认值就是null。我们要怎么理解String类型的不可变,在JDK源码中String这个类的value方法被final关键字修饰,导致String里的值不可以被修改。如图我们还看到整个String这个类也被final修饰,导致这个类无法被继承和重写String的方法。这是为了让大家的String类都是一致的。我们在开发过程中会频繁
2022-05-11 12:03:20
1353
原创 关于Java中的继承和多态
面向对象编程(oop)都有三大基本特征:封装,继承,多态。继承:封装是为了保证代码的隐蔽性,比如private的权限是私有的,只有在类的内部才能看到其构成。而继承和多态则起到不同的作用。继承是为了提高代码的复用性。一般我们这么用extens来定义:子类 extens 父类。继承:当类和类之间是is-a关系的时候,两者之间就存在继承关系。子类继承父类中的所有属性和方法,有显示继承和隐继承,其中private权限的成员属性和成员方法,但是不能直接使用其方法和访问其成员属性。因为父类的属性是私
2022-05-05 10:04:33
522
原创 Java中ArrayList和LinkedList的区别
在Java中虽然ArrayList和LinkedList都实现了List接口,但是其底层原理不相同。ArrayList的底层是一个数组,LinkedList的底层是链表。ArrayList在增加和删除元素时,时间复杂度是O(N)。LinkedList则是O(1),因为LinkedList的底层是一个双向链表,拥有头节点和尾节点,可以通过头节点和尾节点直接添加元素。也可以直接通过索引来删除元素。但是在指定位置添加元素时候,时间复杂度和ArrayList的时间复杂度相同为O(N)。虽然Liked
2022-04-28 18:52:16
1189
原创 Java中的类和对象
对象(object)是对客观事物的抽象,类(class)是对对象的抽象。类是一种抽象的数据类型。它们的关系是,对象是类的实例,类是对象的模板。对象是通过new 关键字产生的,用来调用类的方法;类的构造方法。对象的创建语法:class 类名称{//filed(成员的属性,实例属性)//func(实例方法,成员方法)}注意:(类名称一般采用"大驼峰"命名法进行命名且类中定义的成员变量都有默认值)当一个引用类型为null时,这个引用类型在没有在堆中,自然没有堆中的地址,这时候引用这
2022-04-15 11:05:16
423
原创 Java中的数据类型与运算符
一.数据类型在Java中数据类型分为两大类: 基本数据类型和引用数据类型。其中基本数据类型可以被分为三种,分别为:数值型,字符型,布尔型1.基本数据类型:(1).数值型又被分为浮点型和整型。整型:byte:占用1个字节。short:占用2个字。int:占用4个字节。long:占用8个字节。(在Java中默认整型都是int类型)浮点型:float(单精度浮点型):占用4个字节。double(双精度浮点型):占用8个字节。(在Java中默认小数都是doub
2022-04-05 13:52:15
822
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人