📜  Java中Stream的中间方法(1)

📅  最后修改于: 2023-12-03 14:42:42.873000             🧑  作者: Mango

Java中Stream的中间方法

Stream是Java 8中引入的函数式编程的一种方式,它可以让我们更加方便地处理集合中的数据。Stream中间方法是用来对Stream进行中间操作的方法。

筛选操作
filter

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

distinct方法用于去除Stream中重复的元素。

List<Integer> list = Arrays.asList(1, 2, 3, 2, 1, 4, 5);
list.stream().distinct().forEach(System.out::println);

此代码对list中的数据进行了去重操作,并输出结果。

limit

limit方法用于限制Stream中的元素数量。

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
list.stream().limit(3).forEach(System.out::println);

此代码对list中的数据进行了取前三个元素的操作,并输出结果。

skip

skip方法用于跳过Stream中的前N个元素。

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
list.stream().skip(3).forEach(System.out::println);

此代码对list中的数据进行了跳过前三个元素的操作,并输出结果。

映射操作
map

map方法用于对Stream中的每个元素进行操作,并将操作后的结果存入一个新的Stream中。

List<String> list = Arrays.asList("apple", "orange", "banana", "pear");
list.stream().map(String::toUpperCase).forEach(System.out::println);

此代码对list中的数据进行了大小写转换的操作,并输出结果。

flatMap

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

sorted方法用于对Stream中的元素进行排序。

List<Integer> list = Arrays.asList(3, 1, 4, 2, 5);
list.stream().sorted().forEach(System.out::println);

此代码对list中的数据进行了升序排序,并输出结果。

sorted(Comparator)

我们也可以通过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

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(Comparator)

distinct方法可以通过传入一个比较器来去除Stream中的重复元素。

List<String> list = Arrays.asList("apple", "Orange", "banana", "pear");
list.stream().distinct(String::compareToIgnoreCase).forEach(System.out::println);

此代码对list中的数据进行了不区分大小写的去重操作,并输出结果。

以上就是Java中Stream的中间方法的介绍,这些方法可以大大简化集合数据处理的操作。