![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础
文章平均质量分 54
①笶侕濄
这个作者很懒,什么都没留下…
展开
-
集合数据转换
生成树形结构public class Menu { private Integer id; private String name; private Integer parentId; private List<Menu> childList; public Menu(Integer id, String name, Integer parentId) { this.id = id; this.name = name;原创 2021-11-11 23:37:09 · 370 阅读 · 0 评论 -
自定义监听器实现
自定义监听器实现为了便于理解SpringBoot的监听器,现在手写实现一个监听器监听器必须三大对象:事件监听器广播器事件在JDK层面有定义一个EventObject事件类型,在Spring层面有定义一个ApplicationEvent。但为了确保我们的事件与JDK、Spring都没有关系。所以我们单独定义一个事件类型public interface WeatherEvent { /** * 获取天气状态 */ String getWeather();原创 2021-06-30 23:31:42 · 709 阅读 · 0 评论 -
通过Builder模式创建对象
通过学习Spring源码发现其BeanDefinitionBuilder用来构建BeanDefinition实例,以实现实例化与属性设置的链式调用,所以也尝试着去链式封装直接上 建造者 工具类public class Builder<T> { // 用来保存实例对象 private final Supplier<T> instantiator; // 用于保存Consumer对象,其 修改器 private List<Consumer<T>&g原创 2021-03-30 07:55:04 · 391 阅读 · 0 评论 -
HashMap源码分析
HashMap源码分析数组结构HashMap由数组+链表/红黑树 组成。当数组某一元素Hash冲突达到8时,会转变为红黑树。当长度小于6时,又会转变为链表基本属性// 实际存储的key-value键值对的个数transient int size;// 阈值,当table == {}时,该值为初始容量(16);当table被填充了,也就是为table分配内存空间后,threshold一般为 capacity*loadFactory// HashMap在进行扩容时需要参考thresholdin原创 2021-03-09 22:07:35 · 86 阅读 · 0 评论 -
Comparable/Comparable
比较器分为java.util.Comparator、java.lang.Comparable区别Comparable:属于内部比较器,不可以传nullComparator:属于外部比较器,可以传nullComparator对整数列表排序(升序)List<Integer> list = Arrays.asList(1, 4, 2, 6, 2, 8);// Comparator.naturalOrder()使用其的前提是对象需实现Comparable接口,会调用其comparel原创 2021-03-08 08:04:57 · 322 阅读 · 0 评论 -
Java工具之扩展Optional
在使用Optional时,其核心为一个Predicate(value != null;)+Consumer,当其Predicate为true时,执行Consumer而我封装的这个OptionalFilter,其核心为Predicate+Function,其Predicate可以为用户自定义,在执行ifPresent、ifPresentOrElse时可以带返回值,可以极大的简化if/if…else的书写方式工具类代码如下:import java.util.NoSuchElementException;原创 2021-03-07 11:10:25 · 341 阅读 · 3 评论 -
二进制运算
提及位运算,对绝大多数Java程序员来说,是一种既熟悉又陌生的感觉。熟悉是因为你在学JavaSE时肯定学过,并且在看一些开源框架(特别是JDK源码)时都能看到它的身影;陌生是因为大概率我们不会去使用它。当然,不能“流行”起来是有原因的:不好理解,不符合人类的思维,阅读性差……位运算在low-level的语言里使用得比较多,但是对于Java这种高级语言它就很少被提及了。虽然使用得很少但Java也是支持的,毕竟很多时候使用位运算才是最佳实践位运算在日常开发中使用得较少,但是巧妙的使用位运算可以大量减少运行开原创 2021-03-07 10:57:16 · 2626 阅读 · 1 评论 -
mapstruct基本使用
依赖<dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct</artifactId> <version>${mapstruct.version}</version></dependency><!-- 版本一定要在3.6.0以上,若版本低,则会报找不到属性的错误 --><plugin>原创 2021-03-06 21:58:12 · 172 阅读 · 0 评论 -
Apache StringUtils工具类
判空函数StringUtils.isEmpty(String str) // 判断字符串是否为""或者nullStringUtils.isNotEmpty(String str)StringUtils.isBlank(String str) // 先去空格在按照isEmpty规则来StringUtils.isNotBlank(String str)StringUtils.isAnyBlank(CharSequence… css)StringUtils.is原创 2021-03-06 21:46:49 · 1132 阅读 · 0 评论 -
枚举
简介枚举类型是Java 5中新增特性的一部分,它是一种特殊的数据类型,之所以特殊是因为它既是一种类(class)类型却又比类类型多了些特殊的约束,但是这些约束的存在也造就了枚举类型的简洁性、安全性以及便捷性枚举类使用枚举的Class对象需求:需要一次性获取到所有的枚举值对象:DayEnum[] values = DayEnum.values();DayEnum[] enumConstants = DayEnum.class.getEnumConstants();// 判断某个class是否为枚原创 2021-03-06 21:27:37 · 159 阅读 · 2 评论