本文共 5195 字,大约阅读时间需要 17 分钟。
/** * min():取流中最小值 */ @Test void test1(){ Listlist = List.of(1,4,2,8,5); Integer num = list.stream().min((o1, o2) -> o1.compareTo(o2)).get(); System.out.println(num); //1 }
/** * max():取流中的最大值 */ @Test void test2(){ System.out.println(list.stream().max((o1, o2) -> o1.compareTo(o2)).get()); //8 }
/** * FindFirst():取流中的第一个值 */ @Test void test3(){ Listlist = Arrays.asList(1, 4, 2, 8, 5); //获取串行流 Integer num1 = list.stream().findFirst().get(); System.out.println(num1); // 1 //获取并行流 Integer num2 = list.parallelStream().findFirst().get(); System.out.println(num2); // 1 }
/** * FindAny():获取流中任何一个数 * * 在并行流中,findany()返回的是处理的最快的线程的数据,并行流适用于对于顺序没有严格要求的操作 */ @Test void test4() { Listlist = Arrays.asList(1, 4, 2, 8, 5); //获取串行流 Integer num1 = list.stream().findAny().get(); System.out.println(num1); // 1 //获取并行流 Integer num2 = list.parallelStream().findAny().get(); System.out.println(num2); // 2 }
@Data @AllArgsConstructor @NoArgsConstructor static class User { private String name; private Integer age; } /** * map():调用此方法可以改变返回的类型 */ @Test void test5() { /** * 将asList中的数据由字符串修改为int */ ListasList = Arrays.asList("1", "2", "5", "4"); asList.stream().map(str -> Integer.parseInt(str)).forEach(str -> { System.out.println(str); System.out.println(str.getClass()); }); /** * 将list中的对象的中name打印出来 */ List list = List.of(new User("张三", 13), new User("李四", 36), new User("王五", 12)); list.stream().map(user -> user.getName()).forEach(name -> { System.out.println(name); }); }
/** * filter():对流进行过滤 */ @Test void tst6() { /** * 将年龄大于等于13的用户的名字打印出来 */ Listlist = List.of(new User("张三", 13), new User("李四", 36), new User("王五", 12)); list.stream().filter(user -> user.getAge() >= 13).forEach(user -> { System.out.println(user.getName());//张三、李四 }); }
/** * flatMap():把两个流改变为一个流 */ @Test void tst7() { ListstringList = new ArrayList<>(); stringList.add("aa"); stringList.add("bb"); stringList.add("cc"); stringList.stream().map(str -> str.split("")).flatMap(st -> Arrays.stream(st)).forEach(System.out::print); //aabbcc }
/** * anyMatch():判断条件中,任意一个匹配,则返回true */ @Test void tst() { Lista = List.of("a", "a", "a"); List b = List.of("a", "a", "a","b"); boolean mark1 = a.stream().anyMatch(o -> o.equals("a")); System.out.println(mark1); //true boolean mark2= b.stream().anyMatch(o -> o.equals("a")); System.out.println(mark2); //true }
/** * allMatch():判断条件中,所有元素匹配才返回true */ @Test void tst9() { Lista = List.of("a", "a", "a"); List b = List.of("a", "a", "a", "b"); boolean mark1 = a.stream().allMatch(o -> o.equals("a")); boolean mark2 = b.stream().allMatch(o -> o.equals("a")); System.out.println("mark1:" + mark1 + "----mark2:" + mark2);//mark1:true----mark2:false }
/** * nonMatch():判断条件都不满足,则返回true */ @Test void tst10(){ Listb = List.of("a", "a", "a", "b"); boolean mark = b.stream().noneMatch(o -> o.equals("c")); System.out.println(mark);//true }
/** * sorted():排序 */ @Test void tst11() { Listusers = new ArrayList<>(); users.add(new User("张三", 12)); users.add(new User("李四", 15)); users.add(new User("王五", 13)); //升序: Stream sorted1 = users.stream().sorted(Comparator.comparingInt(User::getAge)); sorted1.forEach(System.out::println); System.out.println("-------------"); //降序: Stream sorted2 = users.stream().sorted(Comparator.comparingInt(User::getAge).reversed()); sorted2.forEach(System.out::println); }
/** * peek():对对象的属性进行操作 */ @Test void tst12() { Listusers = new ArrayList<>(); users.add(new User("张三", 12)); users.add(new User("李四", 15)); users.add(new User("王五", 13)); //对年龄大于12的用户在原基础上年龄再加5 List userList = users.stream().filter(o -> o.getAge() > 12).peek(user -> { user.setAge(user.getAge() + 5); }).collect(Collectors.toList()); System.out.println(userList); //[DemoApplicationTests.User(name=李四, age=20), DemoApplicationTests.User(name=王五, age=18)] }
/** * limit():截取,skip():跳过 */ @Test void tst13(){ //从1开始自增无线迭代,跳过前5个数,截取10个数 Stream.iterate(1,x->++x).skip(5).limit(10).forEach(System.out::print); }//6789101112131415
/** * reduce():Stream的一个聚合方法,它可以把一个Stream的所有元素按照聚合函数聚合成一个结果。 */ @Test void tst14(){ Listlist = Stream.iterate(1, x -> ++x).limit(10).collect(Collectors.toList()); //计算list里面的元素的总和 Integer reduce = list.stream().reduce(0, (a, b) -> a + b); System.out.println(reduce); //传统计算list元素总和方法 int a=0; for (Integer integer : list) { a += integer; } System.out.println(a); }
转载地址:http://bvhwi.baihongyu.com/