//初始化List数据同上
常用的函数式接口有
Comparator<T> 做比较,以接口为返回值
private static Comparator<String> method() {
return (o1, o2) -> {
return o2.length() - o1.length();
};
}
---------------------------------------------------------------
Supplier<T> 生产型函数
private static Integer getmax(Supplier<Integer> i) {
return i.get();
}
---------------------------------------------------------------
Consumer<T> 数据处理无返回值接口
private static void method(String[] name, Consumer<String> con1, Consumer<String> con2) {
for (String string : name) {
con1.andThen(con2).accept(string);
}
}
----------------------------------------------------------------
Predicate<T> 判断接口
private static List filter(List<AgeData> list,Predicate<AgeData> predicate){
List<AgeData> newList=new ArrayList<AgeData>();
for (AgeData object : list) {
if(predicate.test(object)) {
newList.add(object);
}
}
return newList;
}
-----------------------------------------------------------------
Function<R,T> 数据处理且有返回值接口
private static Integer method(String num, Function<String, Integer> function) {
return function.apply(num);
}
创建流+延迟方法
// 去重,需要重写equals方法
.parallelStream().distinct()
// 取list中对象的某一字段值
.stream().map(Student::getName)
// 类似于where
.stream().filter(entity -> entity.getQuotationStatus() > 0)
// 类似于 skip和limit正好相反,skip是取第几个之后的数据,limit是取第几个之前的数据
.stream().skip(2)
.stream().limit(2)
// 正排序
.sorted()
// 倒序
.sorted((o2,o1)->{return o1.compareTo(o2);});
// 最大值
.stream().max(Integer::compare).get();
// 最小值
.stream().min(Integer::compare).get();
// 判断所有元素是否符合某一规则
.stream().allMatch(e->e>0);
// 判断是否至少有一项符合规则
.stream().anyMatch(e->e>77);
// {}中写方法体
.stream().forEach(entity -> { });
// list取值,映射方法
.stream().map()
.stream().map(e->Optional.ofNullable(e).map(Question::getQuestionText).orElse("是空")).collect(Collectors.toSet());
// 削平 (list中的每一个值的某个字段,处理后变成同一维度list)
flatMap(e -> Arrays.stream(e.split(",")))
终结方法
.collect(Collectors.toList());
.count()
// 分组
.collect(Collectors.groupingBy(TMpMachinePlcType::getEquipmentKey))
// 分区
.collect(Collectors.groupingByConcurrent(a -> std.equals(a.getEquipmentStd())))
// 算总和
.stream().reduce(Integer::sum).orElse(0);
// 把两个流合成一个流
Stream.concat(stream1,stream2);
// 不同点在于如果是null of会报错,ofnullable不会
Optional.of(e)
Optional.ofNullable(e)
如果对象是否空
.isPresent();
// 取某一个字段
.map(XXX::getXXXX)
// 是否时返回的code
.orElse("")
.orElseGet
.orElseThrow
// :: 方法引用 必须是类已经存在,方法也已经存在
String::toUpperCase
// 父类方法引用
method(supper::hello);
// 类中方法引用
method(this::hello);
// 构造器引用
creatDate(name,AgeData::new);