java函数式的本质 个人感觉 就是把抽象的接口当做函数处理的引用 去除了面向对象的细节
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import java.math.BigDecimal;
import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.function.Consumer;
import java.util.stream.Collector;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.Stream;
import static java.util.stream.Collectors.partitioningBy;
public class Test {
public static void main(String[] args) {
List<String> l = Arrays.asList("java", "python", "python");
Stream<String> s = Stream.of("java", "python", "C++", "php", "java");
s = l.stream();
//注意 作为stream collect被调用一次就回收了
s.collect(Collectors.toSet()).forEach(System.out::println);
s.collect(Collectors.toCollection(LinkedList::new));
s.collect(Collectors.toCollection(ArrayList::new));
s.collect(Collectors.toCollection(CopyOnWriteArrayList::new));
s.collect(Collectors.toCollection(TreeSet::new)).forEach(System.out::println);
s.collect(Collectors.joining());
s.collect(Collectors.joining("|"));
s.collect(Collectors.joining("||", "Start--", "--End"));
System.out.println(str);
System.out.println(s.collect(partitioningBy(x -> x.length() > 2)));
s.collect(Collectors.collectingAndThen(Collectors.toList(), ImmutableList::copyOf));
}
}