- /**
- * 通过集合创建Stream流
- */
- @Test
- public void test1(){
- ArrayList
arrayList = new ArrayList<>(); - //返回一个顺序流
- Stream
stream = arrayList.stream(); - //返回一个并行流
- Stream
integerStream = arrayList.parallelStream(); - System.out.println(stream);
- System.out.println(integerStream);
- }
-
- /**
- * 通过数组创建Stream流
- */
- @Test
- public void test2(){
- //返回一个流
- Integer[] arr = {1,2,3,4};
- Stream
stream = Arrays.stream(arr); - }
- /**
- * 通过of()创建Stream流
- */
- @Test
- public void test3(){
- Stream
stream = Stream.of("aa", "bb", "cc", "dd"); - }
- /**
- * 筛选与切片
- */
- @Test
- public void test4(){
- //接收lambda从流中排除某些元素
- ArrayList
arrayList = new ArrayList<>(); - for (int i = 1; i <= 10 ; i++) {
- arrayList.add(i);
- }
- //filter()过滤操作
- arrayList.stream().filter(integer -> integer > 5).forEach(System.out :: println);
- //limit() --- 截断流,使其元素不超过给定数量
- arrayList.stream().limit(2).forEach(System.out :: println);
- //skip() --- 跳过元素,返回一个扔掉了前n个元素
- arrayList.stream().skip(5).forEach(System.out :: println);
- //distinct() --- 筛选,通过流所生成元素的hashCode() 和 equals() 去除重复元素
- arrayList.add(5);
- arrayList.add(6);
- arrayList.add(8);
- arrayList.stream().distinct().forEach(System.out :: println);
- }
-
- /**
- * 映射
- */
- @Test
- public void test5(){
- //map() --- 接收一个函数作为参数
- List
list = Arrays.asList("aa", "bb", "cc"); - list.stream().map(str -> str.toUpperCase()).forEach(System.out :: println);
- }
-
- /**
- * 排序
- */
- @Test
- public void test6(){
- //sorted() --- 自然排序
- List
list = Arrays.asList(12, 23, 1, 56, 23); - list.stream().sorted().forEach(System.out :: println);
- //定制排序
- list.stream().sorted((o1, o2) -> o1 - o2).forEach(System.out :: println);
- }
- @Test
- public void test7(){
- //allMatch() --- 检查所有元素是否匹配
- List
list = Arrays.asList(12, 34, 1, 45); - System.out.println(list.stream().allMatch(Integer -> Integer > 12));
- //anyMatch() --- 检查是否至少匹配一个元素
- System.out.println(list.stream().anyMatch(Integer -> Integer > 23));
- //findFirst() --- 返回第一个元素
- System.out.println(list.stream().findFirst().get());
- //count() --- 返回流中元素的总个数
- System.out.println(list.stream().count());
- //max() --- 返回流中最大值
- System.out.println(list.stream().max((o1, o2) -> Integer.compare(o1, o2)).get());
- //min() --- 返回流中最小值
- System.out.println(list.stream().min((o1, o2) -> Integer.compare(o1, o2)).get());
- //forEach() --- 遍历集合
- list.forEach(integer -> {
- System.out.println(integer);
- });
- //reduce() --- 将流中元素反复结合起来,得到一个值
- System.out.println(list.stream().reduce(0, (o1, o2) -> o1 + o2));
- //
- List
collect = list.stream().filter(Integer -> Integer > 23).collect(Collectors.toList()); - collect.forEach(a ->{
- System.out.println(a);
- });
- }