欢迎访问宙启技术站
智能推送

Java 8新特性: Stream API函数操作之详解

发布时间:2023-05-29 00:55:36

Java 8带来了许多令人兴奋的新特性,其中最显著的一项就是Stream API。Stream API是一个用于处理集合数据的函数式编程工具,提供了比传统迭代更加简单、高效和强大的方式来处理数据,使得代码更加易读、易维护和易扩展。在这篇文章中,我们将详细介绍Stream API的一些常见函数操作,并以实例进行讲解。

1. map()

map()函数用于将集合中的每个元素根据指定的规则进行转换,生成一个新的集合。例如,将一个字符串集合中的元素都转换成大写:

List<String> list = Arrays.asList("Java", "Python", "PHP", "C++");

List<String> upperCaseList = list.stream()
                                .map(String::toUpperCase)
                                .collect(Collectors.toList());

System.out.println(upperCaseList); //[JAVA, PYTHON, PHP, C++]

上述代码通过stream()方法将集合装换成Stream,然后使用map()函数将每个元素的大小写进行转换,并最终通过collect()方法将转换后的结果收集到一个新的集合中。

2. filter()

filter()函数用于过滤集合中的元素,保留符合条件的元素。例如,从一个整数集合中过滤出所有大于0的元素:

List<Integer> numbers = Arrays.asList(-2, -1, 0, 1, 2, 3, 4, 5);

List<Integer> positiveNumbers = numbers.stream()
                                        .filter(n -> n > 0)
                                        .collect(Collectors.toList());

System.out.println(positiveNumbers); //[1, 2, 3, 4, 5]

上述代码通过filter()函数过滤出大于0的元素,并使用collect()方法将结果收集到一个新的集合中。

3. flatMap()

flatMap()函数用于将一个集合中的元素映射成一个新的集合,并且将这些新的集合合并成一个大的集合。例如,将一个包含多个集合的集合中的所有元素合并到一个新的集合中:

List<List<String>> lists = Arrays.asList(Arrays.asList("Java", "Python"),
                                         Arrays.asList("PHP", "C++"),
                                         Arrays.asList("Ruby", "JavaScript"));

List<String> flatList = lists.stream()
                             .flatMap(Collection::stream)
                             .collect(Collectors.toList());

System.out.println(flatList); //[Java, Python, PHP, C++, Ruby, JavaScript]

上述代码通过flatMap()函数将一个包含多个字符串集合的集合展开成一个新的字符串集合,并使用collect()方法将结果收集到一个新的集合中。

4. distinct()

distinct()函数用于去重集合中的元素,保留 的元素。例如,去重一个字符串集合中的元素:

List<String> list = Arrays.asList("Java", "Python", "PHP", "Python", "Ruby");

List<String> distinctList = list.stream()
                                .distinct()
                                .collect(Collectors.toList());

System.out.println(distinctList); //[Java, Python, PHP, Ruby]

上述代码通过distinct()函数去重集合中的元素,并使用collect()方法将结果收集到一个新的集合中。

5. sorted()

sorted()函数用于对集合中的元素进行排序。例如,将一个整数集合按照升序排序:

List<Integer> numbers = Arrays.asList(3, 1, 4, 2, 5);

List<Integer> sortedNumbers = numbers.stream()
                                        .sorted()
                                        .collect(Collectors.toList());

System.out.println(sortedNumbers); //[1, 2, 3, 4, 5]

上述代码通过sorted()函数对整数集合进行排序,并使用collect()方法将结果收集到一个新的集合中。

6. limit()

limit()函数用于获取集合中前n个元素。例如,获取一个整数集合中前3个元素:

List<Integer> numbers = Arrays.asList(3, 1, 4, 2, 5);

List<Integer> limitedNumbers = numbers.stream()
                                        .limit(3)
                                        .collect(Collectors.toList());

System.out.println(limitedNumbers); //[3, 1, 4]

上述代码通过limit()函数获取整数集合中前3个元素,并使用collect()方法将结果收集到一个新的集合中。

7. skip()

skip()函数用于跳过集合中的前n个元素。例如,跳过一个整数集合中的前3个元素:

List<Integer> numbers = Arrays.asList(3, 1, 4, 2, 5);

List<Integer> skippedNumbers = numbers.stream()
                                        .skip(3)
                                        .collect(Collectors.toList());

System.out.println(skippedNumbers); //[2, 5]

上述代码通过skip()函数跳过整数集合中的前3个元素,并使用collect()方法将结果收集到一个新的集合中。

8. forEach()

forEach()函数用于遍历集合中的每个元素,并执行指定的操作。例如,遍历一个字符串集合,将每个元素打印出来:

List<String> list = Arrays.asList("Java", "Python", "PHP", "C++");

list.stream().forEach(System.out::println);
//Java
//Python
//PHP
//C++

上述代码通过forEach()函数遍历字符串集合中的每个元素,并执行指定的操作(打印到控制台)。

以上是Stream API的一些常见函数操作的详细说明和实例。通过使用Stream API,我们可以更加简单、高效和强大地处理集合数据,使得代码更加易读、易维护和易扩展。