Java
文章平均质量分 61
Java
SuZhan7710
于道各努力,千里自同风
展开
-
Java 基础回顾之泛型
如果在写接口的时候都没有定义泛型,它默认的就是 Object 类,其实这样写是不规范的。在上述的泛型接口中已经规定传入其中的必须是 A,B 类的对象,那么当我们传入其他类的对象时就会报错。使用泛型方式给 HashMap 中放入三个学生对象,并输出对象信息;原创 2023-02-26 18:40:12 · 598 阅读 · 0 评论 -
超详细:Java 读取 Windows 共享文件夹中的文件,并下载到本地电脑中
JCIFS 是使用纯 Java 开发的一个开源框架,通过 smb 协议访问远程文件夹。该框架同时支持 Windows 共享文件夹和 Linux 共享文件夹,不过,Linux 共享文件夹需要安装 Samba 服务软件。(官网:http://www.samba.org/)。原创 2022-10-01 18:16:45 · 7200 阅读 · 8 评论 -
JDK1.8中Date_Time API使用
Java 8 提供了一个全新的 API,用以替换 java.util.Date 和 java.util.Calendar。LocalTime 与 LocalDate 相反,它只代表一个时间,没有日期。LocalDateTime,也是 Java 中最常用的 Date / Time 类,LocalDate 只是一个日期,没有时间。,但没有一天的具体时间。原创 2022-08-22 11:18:29 · 200 阅读 · 0 评论 -
Java 中 equals 和 contains 的区别
例如:“abc”.equals(“abc”),返回结果是 Boolean 类型的 true;“abc”.equals(“ab” ),返回结果是 Boolean 类型的 false。例如: “abc”.contains(“a”),返回结果是 Boolean 类型的 true。contains包含包括,“abc”.contains(“abcd”) 是返回的false。“abc”.contains(“d”),返回结果是 Boolean 类型的 false。是判断字符串的是不是相等。...转载 2022-08-17 14:02:46 · 617 阅读 · 0 评论 -
Java 实现计算表达式(接受小数点)
思路:把数字和操作字符装入2个栈中,根据操作字符的优先级计算,最后数中留下计算结果。列入计算:2*(120/20+(40+20)*10-80+20-6)原创 2022-08-17 13:56:08 · 862 阅读 · 0 评论 -
Java8 Stream详解
stream流在管道中经过中间操作(intermediate operation)的处理,最后由最终操作(terminal operation)得到前面处理的结果。:**map对集合中每个元素加工,返回加工后结果;**flatMap:**流扁平化,让你把一个流中的“每个值”都换成另一个流,然后把所有的流连接起来成为一个流。**总结:**map是对一级元素进行操作,flatmap是对二级元素操作。注意:文章中因排序部分用到外部比较器,需要导入外部jar包。**map:**对流中每一个元素进行处理。...原创 2022-08-12 21:51:58 · 340 阅读 · 0 评论 -
Java8 Stream API 高阶操作
并行流颇有种“分而治之”的味道(底层forkjoin线程池),将流拆分并行处理,能较大限度利用计算资源,提高工作效率。但要注意,如果当前操作对顺序有要求,可能并不适合使用parallelStream。比如上图右边,使用并行流后返回的可能是4而不是1。只要第一个,后续元素不会继续遍历。...原创 2022-08-12 21:18:04 · 373 阅读 · 0 评论 -
Java8 Stream API 基础操作
先来个最简单:再来一个:sorted试着加入sorted()玩一下。在此之前,我们先来见见一位老朋友:Comparator。这个接口其实早在JDK1.2就有了,但当时只有两个方法:JDK1.8通过默认方法的形式引入了很多额外的方法,比如reversed()、Comparing()等。来玩一下Stream#sorted(),看看和List#sort()有啥区别。limit/skip所谓的skip(N)就是跳过前面N个元素,limit(N)就是只取N个元素。collect()是最重要、最难掌握原创 2022-08-11 21:28:43 · 438 阅读 · 0 评论 -
Java Stream 简介
Lamdba 表达式,必须是函数氏接口,必须只有一个方法,如果接口中只有一个方法,Java 默认它为函数式接口。Lambda是一个匿名函数,可以理解为是一段可以传递的代码(将代码像数据一样进行传递),使 Java 语言的表达能力得到了提升。左侧:指定了 Lamdba 表达式所需要的所有参数。右侧:Lamdba 表达式要执行的功能。函数式接口中,可以有实现方法,也可以有静态方法。**定义:**对数据源的计算。......原创 2022-08-11 20:43:41 · 336 阅读 · 0 评论 -
List 集合的一些常用操作
List 集合的一些常用操作原创 2022-08-06 09:00:34 · 163 阅读 · 0 评论 -
画了一张图,简单描述了一下 HashMap 的 put 方法的执行过程
HashMap是最经典的Map实现,下面介绍一下put的过程:在put的时候,首先要判断数组是否为空,如果数组为空则会进行第一次的扩容。然年后对key做hash运算,计算出该key所在的index。如果没碰撞,直接放到数组中,如果碰撞了,需要判断目前数据结构是链表还是红黑树,根据不同的情况来进行插入。假设key是相同的,则替换到原来的值。最后判断哈希表是否满了(当前哈希表大小*负载因子),如果满了,则扩容。在get的时候,还是对key做hash运算,计算出该key所在的index,然后判断是否原创 2022-01-15 20:58:25 · 982 阅读 · 3 评论 -
大白话解释hash碰撞是什么以及如何解决
一、Hash如何存数据hash表的本质其实就是数组,hash表中通常存放的是键值对Entry。这里的id是个key,哈希表就是根据key值来通过哈希函数计算得到一个值,这个值就是下标值,用来确定这个Entry要存放在哈希表中哪个位置。二、Hash碰撞hash碰撞指的是,两个不同的值(比如张三、李四的id)经过hash计算后,得到的hash值相同,后来的李四要放到原来的张三的位置,但是数组的位置已经被张三占了,导致冲突。三、解决方法3.1 开放寻址法开放寻址法指的是,当前数组位置1被占用了,就原创 2022-01-14 18:01:45 · 1413 阅读 · 2 评论 -
Java集合源码解析--ArrayList
目录标题一、ArrayList1.1 整体架构1.2 类注释二、 源码解析2.1 如何初始化2.2 新增和扩容实现一、ArrayList1.1 整体架构ArrayList 整体架构比较简单,就是一个数组结构,比较简单,如下图:图中展示是长度为 10 的数组,从 1 开始计数,index 表示数组的下标,从 0 开始计数,public class ArrayList<E> extends AbstractList<E> implements List<原创 2022-01-11 15:35:55 · 561 阅读 · 5 评论 -
NIO中Buffer常用flip()方法
NIONIO概述Java NIO 由以下核心部分组成:Channel通道Buffer缓冲区Selector选择器在Java NIO编程中,我们是面向缓冲区(Buffer)编程的,对缓冲区常常需要使用java.nio.Buffer中的flip()方法我们先来介绍一些什么是BufferBuffer使用 Buffer 与 Channel 交互,数据从通道读入缓冲区,或从缓冲区写入通道。缓冲区本质上是一个可以写入数据的内存块,之后可以读取数据。 Buffer 对象包装了此内存块原创 2020-10-21 21:15:51 · 3362 阅读 · 18 评论 -
常见的排序算法、笔面试常考(Java版)
1.选择排序每次从待排序的元素中选择最小的元素,依次和第1、2、3…位置的元素进行交换。这样在数组前面的部分形成有序区域。每进行一次交换,有序区域长度加一。原创 2021-12-26 14:09:57 · 1425 阅读 · 2 评论 -
实现动态代理小demo
动态代理DEMO原创 2021-12-23 11:43:11 · 277 阅读 · 0 评论 -
HashSet的一道经典面试题
写一个Person类,有name和id两个属性,并且实现了hashCode和equals方法,请写出测试类中代码的输出结果:import java.util.HashSet;class Test{ public static void main(String[] args) { //重写了hashCode()和equals() 方法 HashSet set = new HashSet(); Person p1 = new Person(1001, "A原创 2021-02-08 15:06:51 · 313 阅读 · 5 评论 -
一名小白 必须会的一些List知识点
1. ArrayListList是一个有序的集合,和Set不同的是,List允许存储项的值为空,也允许存储相等值的存储项,并且List是继承于Collection接口。List常见的实现类有ArrayList和LinkedList。ArrayList 可以被理解为一个动态的数组,是一个数组实现的列表,是List接口中的可以调整数组大小实现的接口。数组大家都不陌生,数组的特点就是查询的速度很快,只要根据索引的方式,就可以快速的找到你想查找的元素,但是它的增删改查的速度十分的慢,每一次增加,删除元素,都要原创 2021-02-05 23:19:07 · 221 阅读 · 0 评论