package com;
import java.util.*;
import java.util.function.BiConsumer;
import java.util.function.BinaryOperator;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.Collector;
public class App2 {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.stream().collect(new Collector<String, Set<String>, Set<String>>() {
@Override
public Supplier<Set<String>> supplier() {
System.out.println("suppliier invoked!");
return HashSet::new;
}
@Override
public BiConsumer<Set<String>, String> accumulator() {
System.out.println("accmulator invoked!");
return Set::add;
}
@Override
public BinaryOperator<Set<String>> combiner() {
System.out.println("combiner invoked!");
return (set1, set2) -> {
set1.addAll(set2);
return set1;
};
}
@Override
public Function<Set<String>, Set<String>> finisher() {
System.out.println("finisher invoked!");
return Function.identity();
}
@Override
public Set<Characteristics> characteristics() {
System.out.println("characteristics invoked");//没有任何限定
return new HashSet<>();
}
});
}
}
参考:
java8新特性(四) Collector(收集器)
Java8中重要的收集器collector
JAVA8学习9-自定义收集器(Characteristics 使用说明)