- 博客(210)
- 收藏
- 关注
原创 每日一题:不修改数组找出重复的数字
抽屉原理: 如果把十个苹果放到九个抽屉就会多出一个,这一个再放进去就会出现某抽屉至少放2个。利用这个原理,对区间进行划分,算左区间有多少个苹果,苹果数是否大于抽屉数,右区间收缩,不断如此。
2025-06-15 13:19:47
158
原创 javaSE.Collections工具类
Collections.max->求list最大值,但是要Integer这样的可比较的。equals类的String类比较重写了equals方法,比较的是值相等。值相同,对象不同(引用不同)的hash👇。JDK为我们准备的专用于集合的工具类。没有重写哈希和equals👇。这跟集合的底层封装有关。👇这是通过向导一键生成的。
2025-05-21 09:15:08
132
原创 javaSE.Stream流
流相当于流水线,进入流水线stream() 开始一系列加工,最后返回.collect(Collectors.to-----)注意,不能认为collect 前面的语句是依次执行,它只是设定程序。最后一步进行加工处理得到产品。通过stream可以完成所有数字的求和👇。快速处理字符串,不需要一个个遍历来搞👇。生成统计实例进行快速统计。
2025-05-20 07:45:06
98
原创 javaSE.Map
entrySet()获取map中所有的键值对的集合,每个键值对是一个entry对象,forEach遍历集合遍历每个entry对象。左边值映射着右边的值,左边相当于钥匙,开到右边的门获取得到信息。Map存储映射关系。第一次,小明覆盖掉null,返回null打印。是否存在该key👇containsKey()维持插入顺序👇LinkedHashMap。第二次,小红覆盖掉小明,返回小明打印。第三次,小刚覆盖掉小红,返回小红打印。HashMap的顺序👇。
2025-05-18 20:09:26
164
原创 javaSE.Queue&Deque
Deque<E>继承自Queue<E> 继承自Collection<E>继承自Iterator<T>只是保证出队顺序按照优先级,并不是说存储顺序是这样。两端都可以入队出队,既可以实现队列,也可以实现栈。优先队列PriorityQueue👇 →”小根堆“底层是大根堆小根堆实现的,存储也是。Deque当作栈使用👇。queue入队出队👇。
2025-05-15 16:48:30
204
原创 javaSE.迭代器
摆烂一段时间,终于开始继续学了。哎,学东西学一半中断,不坚持下去,会亏很多东西。对于整个人的磁场也是。尽量不要半途而废吧,任何东西都是。得益于literable提供的迭代器生成方法,实际上只要是实现了迭代器接口的类(我们自己写的都行),都可以使用foreach语法。👇forEach及其方法引用。用了之后要重新创建👇。
2025-05-15 16:16:03
161
原创 javaSE.走进集合类
集合表示一组对象,每一个对象我们都可以称其为元素。不同的集合有不同的性质,比如一些允许重复的元素,而另一些集合则不允许,一些集合是有序的,而其他则是无序的。集合类其实就是为了更好地组织、管理和操作我们的数据而存在的,包括列表、集合、队列、映射等数据结构。2.数组可以存放基本数据类型,但集合只能存放对象。1.数组的大小是固定的,集合的大小是可变的。1.他们都是容器,都能容纳一组元素。
2025-04-23 18:19:31
97
原创 javaSE.二叉查找树和平衡二叉树
如果是递增的情况👇这样插入就是其实就是一个单链表,查找效率退化了。二叉查找树只有在理想的情况下👇👇,查找效率才是最高的,因为可能会有一边倒👆的情况。4 2 6 1 3 5 7👇这样按顺序插入👇↗74 → 6 → 5↘ 2 →3↘1。
2025-04-21 17:58:51
193
原创 javaSE.二叉树的遍历
👇👇👇根->左->右左根右点三行断电👇点击右上角调试👇点击F9观察控制台和线程👇👇这里是运行的行数,第几行代码的意思👇当前行数变量情况上面断电多加一条if语句👆更清晰。其实就是递归流程以及其中变量情况队列👉javaSE.队列-CSDN博客
2025-04-20 22:17:50
280
原创 javaSE.判空包装类
对这种可能👆为空的情况处理,如果为空,那么就返回另一种备选方案:👇orElse。map可以将String处理为Integer类型 然后get 获取对象👇。get方法可以获取被包装的对象引用,但是如果为空的话,会抛出异常。使用map来进行映射,将当前类型转换为其他类型,或者是进行处理。判空包装类Optional,这个类可以很有效的处理空指针问题。包装之后,我们再获取时可以优雅地处理为空的情况:👇。Optional类可以更加优雅地处理这种问题👇👇。还可以将包装类型转换为另一种类型👇。
2025-04-19 20:10:58
186
原创 javaSE.四大函数式接口
函数式接口就是JDK1.8专门为我们提供好的用于Lambda表达式的接口,这些接口都可以直接使用Lambada表达式。
2025-04-19 15:54:51
347
原创 javaSE.类型擦除机制
泛型是如何实现的,程序编译之后的样子是什么样的?一个泛型类型编译之后实际上会直接使用默认的类型👇我们给类型变量设定了上界,那么从默认类型变成上界定义的类型👇👇👇编译之后:👇泛型仅仅在编译阶段进行类型检查,当程序在运行时,并不会真的去检查对应类型,所以哪怕我们不去指定类型也可以直接使用👇使用的时原始上界Number👇可以传入Number, 11.1👇若是上界Object👇👇默认为Object👇可传入String👇在指定类型时,编译才会进行检查👇否则就是默认原始类型👆。
2025-04-18 12:55:20
289
原创 javaSE.泛型界限
extends Number, 不能确定是Number的类及其哪个子类,这样子去setValue,无法确定是否是这个类型,虽然他确实是Integer👇👇。也可以创建对象这样设置,上界必须是Integer👇。限定下界就没有上述的问题👆👇👇👇下界的话。上界Number获取的是Number👇。继承自Number类的就符合要求👇。这里是隐式类型转换为Object👇。同理Integer为上界👇👇👇。强转子类Integer👇。Number为上界👇👇👇。快速获取类型var👇。
2025-04-17 19:24:12
180
原创 javaSE.泛型方法
当某个方法(静态方法或者是成员方法)需要接受的参数类型并不确定时,我们也可以使用泛型来表示👇。返回值小于0,说明第一个参数排在第二个参数前面。传入空串,返回空串,字符串类型。在Arrays中的泛型方法👇👇👇。替换成lambda表达式👇。
2025-04-16 20:51:52
120
原创 javaSE.泛型与多态
当子类实现此接口时,我们可以选择在实现类明确泛型类型,或是继续使用此泛型让具体创建的对象来确定类型👇。不只是类,包括接口,抽象类,都是支持泛型的:👇。
2025-04-16 19:49:54
131
原创 javaSE.走进泛型. 泛型类
为了统计学生成绩,要求设计一个Score对象,包括课程名称、课程号、课程成绩,但是成绩分为两种,一种是以优秀、良好、合格来作为结果,还有一种就是60.0,75.5,92.5这样的数字分数,可能高等数学这门课是以数字成绩进行结算,而计算机网络实验这门课是以等级进行结算,这两种分数类型都有可能出现,那么现在改如何去设计这样的一个Score类呢?现在问题就是,成绩可能是String类型,也可能是Integer类型,如何才能很好的去存可能出现的两种类型呢?
2025-04-16 18:59:16
337
原创 javaSE.数组工具类
Arrays.binarySearch 数组中有的元素,并且是有序数组。判断二位数组内容是否一样,Arrays.deepEquals(a,b)判断一位数组内容是否一样, Arrays.equals(a,b)有序数组(从小到大),使用二分搜索快速找到对应元素在哪个位置。打印二位数组,打印出来的是引用,二维数组里边存的是引用。.toString(arr) 打印。核心:二位数组里边存的是引用。
2025-04-16 16:05:43
145
原创 javaSE.数学工具类
生成一个随机数,需要使用Random类来生成(这个类是java.util包下的,需要手动导入)👇。按理说,sinPI = 0;这是精度导致的,所以实际上结果就是0.👇。还有一些比较特殊的计算👇。
2025-04-16 08:43:37
116
原创 javaSE.抛出异常
当程序没有按照我们理想的样子运行而出现异常时(默认会交给jvm来处理,jvm发现任何异常都会立即终止程序运行,并在控制台打印栈追踪信息)现在我们希望能够自己处理出现的问题,让程序运行下去,就需要对异常进行捕获。如果某个方法明确指出会抛出哪些异常,除非抛出的异常是一个运行时异常,否则我们必须要使用try-catch语句块进行异常的捕获,不然无法通过编译。catch中捕获的类型只能时Throwable的子类,也就是说要么是抛出的异常,要么是错误,不能是其他类型。即使出现了异常并未捕获也会执行finally👇。
2025-04-14 18:31:37
224
原创 javaSE.方法引用
方法引用就是将一个已实现的方法,直接作为接口中抽象方法实现(方法定义一样的前提下)那么使用时候,可以直接使用Lambda表达式。Integer里面有现成的求和。
2025-04-14 09:56:24
231
原创 javaSE.基本类型包装类
java是面向对象语言,但是java的基本数据类型不是面向对象的,通过包装使得Java能够更好地体现面向对象的思想。其中能够表示数字的基本类型包装类,继承自Number类,
2025-03-18 14:57:19
229
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人