Collector 接口
Collectors
类提供了很多工具方法,我们也可以自己实现Collector
接口自定义Collector
.
Collector 定义
Collector
提供接口的定义public interface Collector<T, A, R>
,有三个泛型T
、A
、R
T
:元素类型A
:归约运算的可变累积类型R
:结果类型
天蝎座
Collectors
提供了常用的方法Collectors
提供了常用的方法,该类类似Collections
工具类,常用的包括:
Collectors.toList()
:Collectors.toSet()
:Collectors.toCollection()
Collectors.counting()
Collectors.summingInt()
Collectors.summarizingInt()
Collectors.averagingInt()
Collectors.joining()
Collectors.maxBy()
Collectors.minBy()
Collectors.reducing()
Collectors.collectingAndThen()
Collectors.groupingBy()
Collectors.mapping()
方法引用存在三类:
1、指向静态方法的方法引用(例如Integer的parseInt方法,写作Integer::parseInt)
2、指向任意类型实例方法的方法引用(例如String的length方法,写作String::length)
3、指向现有对象的实例方法的方法引用(假设你有一个局部变量expensiveTransaction用于存放Transaction类型对象,他支持实例方法getValue,那么你就可以些expensive-Transaction:;getValue。)
参考文章:https://howtodoinjava.com/design-patterns/creational/implementing-factory-design-pattern-in-java/
工厂模式引入了类之间的低耦合类,是设计程序架构的时候最重要的原则。低耦合说的是应用程序中抽象实体代替具体类。它不仅是我们的架构更灵活,同时以更加不那么脆弱。
单例只能被类实例化一次。单例例要么表示一个⽆状态的对象,要么表示一个本质上独⼀无二的系统组件。单例会使测试它的客户端很难,因为它不可能去模拟单例除非它实现了了作为其类型的接口。
有两种方式实现单例。两种方式都是基于私有构造方法和公共静态成员来提供基础实例。一种方式,成员为final
参考文章:https://howtodoinjava.com/design-patterns/creational/singleton-design-pattern-in-java/
这种模式会在实际需要之前被创建出来,大部分是在系统启动的时候。加载初始化被创建不论实际是否需要
1 | public class EagerSingleton { |
参考文章:https://howtodoinjava.com/design-patterns/creational/builder-pattern-in-java/
Builder模式旨在“将复杂对象的构造与其表示分开,以便相同的构造过程可以创建不同的对象“。
我们已经知道应用程序中不可变性和不可变实例的好处。如果您对此有任何疑问,在java中String类。正如我已经说过的,构建器模式帮助我们创建具有大量状态属性的不可变类。
在任何用户管理模块中,主要实体是User,比方说。理想情况下,一旦用户对象完全创建,您就不希望改变它的状态。现在,让我们假设,我们的User对象具有以下5个属性,即firstName,lastName,age,phone和address。在通常的实践中,如果要创建不可变的User类,则必须将所有五个信息作为参数传递给构造函数。它看起来像这样:
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true