List<Integer> list = Arrays.asList(1,2,3,3,2,4);
Stream<Integer> stream3 = list.stream().distinct();
stream3.forEach(System.out::println);--------------------输出---------------------1234
2.2 映射
2.2.1 map()–里面使用函数型接口(Function)
List<String> list = Arrays.asList("aa","bb","cc");
Stream<String> stream3 = list.stream().map(String::toUpperCase);
stream3.forEach(System.out::println);----------------------输出-----------------------
AA
BB
CC
------------------------------------------------
集合里的每一个元素都会使用到String.toUpperCase()方法
它是以aa作为一个元素,bb作为一个元素
List<String> list = Arrays.asList("aa","bb","cc");
Stream<String> stream3 = list.stream().flatMap(l ->{
String[] strings = l.split("");return Arrays.stream(strings);});
stream3.forEach(System.out::println);-------------------输出-----------
a
a
b
b
c
c
-----------------------------------------------
flatMap将原来的流转换为一个新的流并且,是以每一个值为单位的
2.3 排序
2.3.1 sorted() – 自然排序 按照Comparable的方式
List<String> list = Arrays.asList("aa","cc","bb");
Stream<String> stream3 = list.stream().sorted();
stream3.forEach(System.out::println);---------------输出-----------
aa
bb
cc
2.3.2 sorted( Comparator com)–定制排序
List<Integer> list = Arrays.asList(1,3,2,6,8,3,9);
Stream<Integer> stream3 = list.stream().sorted(Integer::compare);
stream3.forEach(System.out::println);--------------输出--------------1233689
三、终止操作
3.1 查询与匹配
3.1.1 allMatch()–里面的时断言型接口(Predicate)
List<Integer> list = Arrays.asList(1,3,2,6,8,3,9);boolean b = list.stream().allMatch(x -> x >3);
System.out.println(b);------------------输出--------------------false//因为不是所有的数都大于3
3.1.2 anyMatch()–里面的时断言型接口(Predicate)
List<Integer> list = Arrays.asList(1,3,2,6,8,3,9);boolean b = list.stream().anyMatch(x -> x >3);
System.out.println(b);------------------输出--------------------true//只要有大于3的数就返回true
3.1.3 noneMatch()–里面的时断言型接口(Predicate)
List<Integer> list = Arrays.asList(1,3,2,6,8,3,9);boolean b = list.stream().noneMatch(x -> x >3);
System.out.println(b);------------------输出--------------------false//双重否定,返回false就是有匹配的元素
3.1.3 findFirst----返回第一个元素
List<Integer> list = Arrays.asList(1,3,2,6,8,3,9);
Optional<Integer> first = list.stream().findFirst();
System.out.println(first.get());-----------------输出----------------1
3.1.4 findAny----返回当前流中的任意一元素
List<Integer> list = Arrays.asList(1,3,2,6,8,3,9);
Optional<Integer> first = list.stream().findAny();
System.out.println(first.get());-----------------输出----------------1
3.1.5 count-----返回流中元素的总数
List<Integer> list = Arrays.asList(1,3,2,6,8,3,9);long count = list.stream().count();
System.out.println(count);-----------------输出----------------7
3.1.5 count-----返回流中元素的总数
#max----返回流中最大值
List<Integer> list = Arrays.asList(1,3,2,6,8,3,9);
Optional<Integer> max = list.stream().max(Integer::compareTo);
System.out.println(max.get());-----------------输出----------------9
3.1.6 min----返回流中的最小值
List<Integer> list = Arrays.asList(1,3,2,6,8,3,9);
Optional<Integer> min = list.stream().min(Integer::compareTo);
System.out.println(min.get());-----------------输出----------------1
3.1.7 forEach – 迭代
List<Integer> list = Arrays.asList(1,3,2,6,8,3,9);
list.stream().forEach(System.out::println);-----------------输出----------------1326839//注意:forEach的迭代操作是由Stream API完成的称为内部迭代//借助于iterator的方式为外部迭代