📅  最后修改于: 2023-12-03 14:42:42.873000             🧑  作者: Mango
Stream是Java 8中引入的函数式编程的一种方式,它可以让我们更加方便地处理集合中的数据。Stream中间方法是用来对Stream进行中间操作的方法。
filter方法用于根据指定的条件过滤掉不符合条件的数据。
List<String> list = Arrays.asList("apple", "orange", "banana", "pear");
long count = list.stream().filter(s -> s.contains("a")).count();
System.out.println("count:" + count); //输出:count:3
此代码对list
中的数据进行了过滤,只保留包含字母"a"的数据,然后计算符合条件的数据个数并输出。
distinct方法用于去除Stream中重复的元素。
List<Integer> list = Arrays.asList(1, 2, 3, 2, 1, 4, 5);
list.stream().distinct().forEach(System.out::println);
此代码对list
中的数据进行了去重操作,并输出结果。
limit方法用于限制Stream中的元素数量。
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
list.stream().limit(3).forEach(System.out::println);
此代码对list
中的数据进行了取前三个元素的操作,并输出结果。
skip方法用于跳过Stream中的前N个元素。
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
list.stream().skip(3).forEach(System.out::println);
此代码对list
中的数据进行了跳过前三个元素的操作,并输出结果。
map方法用于对Stream中的每个元素进行操作,并将操作后的结果存入一个新的Stream中。
List<String> list = Arrays.asList("apple", "orange", "banana", "pear");
list.stream().map(String::toUpperCase).forEach(System.out::println);
此代码对list
中的数据进行了大小写转换的操作,并输出结果。
flatMap方法与map方法类似,但不同之处在于它可以将多个Stream合并成一个Stream。
List<List<String>> list = Arrays.asList(
Arrays.asList("apple", "orange"),
Arrays.asList("banana", "pear")
);
list.stream().flatMap(Collection::stream).forEach(System.out::println);
此代码对一个包含两个List的List进行了合并操作,并输出结果。
sorted方法用于对Stream中的元素进行排序。
List<Integer> list = Arrays.asList(3, 1, 4, 2, 5);
list.stream().sorted().forEach(System.out::println);
此代码对list
中的数据进行了升序排序,并输出结果。
我们也可以通过sorted(Comparator)
方法指定一个比较器来对Stream进行排序。
List<String> list = Arrays.asList("apple", "orange", "banana", "pear");
list.stream().sorted((o1, o2) -> o2.length() - o1.length()).forEach(System.out::println);
此代码对list
中的数据进行了按照字符串长度降序排序,并输出结果。
peek方法用于在Stream进行中间操作时,查看每个元素的内容。
List<String> list = Arrays.asList("apple", "orange", "banana", "pear");
long count = list.stream().filter(s -> s.contains("a")).peek(System.out::println).count();
System.out.println("count:" + count);
此代码对list
中的数据进行了包含字母"a"的过滤操作,并在过程中查看每个元素,并输出符合条件的数据个数。
distinct方法可以通过传入一个比较器来去除Stream中的重复元素。
List<String> list = Arrays.asList("apple", "Orange", "banana", "pear");
list.stream().distinct(String::compareToIgnoreCase).forEach(System.out::println);
此代码对list
中的数据进行了不区分大小写的去重操作,并输出结果。
以上就是Java中Stream的中间方法的介绍,这些方法可以大大简化集合数据处理的操作。