package day06.java8;
// stream 对集合和数组提供一些流化的操作
import com.google.common.collect.Lists;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.stream.Stream;
public class StreamDemo01 {
public static void main(String[] args) {
List<String> list = Lists.newArrayList("adbc","acd","bcdd","efdww","ab");
// 一、获取流
// 集合获取流1
Stream<String> stream = list.stream();
// 集合获取流2,获取并行流,处理的快
Stream<String> stream1 = list.parallelStream();
//数组获取流
Stream<String> stream2 = Arrays.stream(new String[]{"ab", "bc"});
// 转换成并行流
Stream<String> parallel = stream2.parallel();
//二、流的操作--流的中间操作
// 中间操作有很多,可以串起来
//list.stream().map().map().filter();
// filter(),传一个断言型的接口(筛选以a开头的字符串)
//forEach 结束操作
list.stream()
.filter(str->str.startsWith("a")) // 过滤+断言型接口
.map(str->str.toUpperCase()) // 转换型
.sorted(((o1, o2) -> o1.length()-o2.length())) // 排序
.limit(2)//取前2个
.forEach(str-> System.out.println(str)); //结束+消费型接口
System.out.println("====================");
List<String> list1 = Lists.newArrayList("acd","acd","bcdd","efdww","ab");
// distinct 去重
list1.stream().distinct().forEach(str -> System.out.println(str) );
//三、流的操作--流的结束操作
}
}