Java函数式编程中常用的函数操作
Java函数式编程中常用的函数操作有很多,本文将介绍一些常用的操作。
1. map函数
map函数是将一个函数应用于流中的每个元素,并返回包含结果的新流。例如,如果我们有一个字符串列表,我们可以将每个字符串转换为大写字母:
List<String> list = Arrays.asList("apple", "banana", "orange");
List<String> upperChars = list.stream()
.map(s -> s.toUpperCase())
.collect(Collectors.toList());
2. flatMap函数
flatMap函数是在将一个函数应用于流中的每个元素之后,将结果压缩到一个流中。例如,如果我们有一个字符串列表,我们可以使用flatMap函数将每个字符串以流的形式展开:
List<List<Integer>> list = Arrays.asList(Arrays.asList(1, 2), Arrays.asList(3, 4));
List<Integer> flatList = list.stream()
.flatMap(l -> l.stream())
.collect(Collectors.toList());
3. filter函数
filter函数是用于从流中过滤元素的函数。例如,如果我们有一个整数列表,我们可以使用filter函数选择所有偶数:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
List<Integer> even = list.stream()
.filter(i -> i % 2 == 0)
.collect(Collectors.toList());
4. reduce函数
reduce函数是用于将流中的元素归纳为一个值的函数。例如,如果我们有一个整数列表,我们可以使用reduce函数将所有元素相加:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
int sum = list.stream()
.reduce(0, (a, b) -> a + b);
5. forEach函数
forEach函数是用于对流中的每个元素进行操作的函数。例如,如果我们有一个字符串列表,我们可以使用forEach函数将每个字符串打印出来:
List<String> list = Arrays.asList("apple", "banana", "orange");
list.stream()
.forEach(s -> System.out.println(s));
6. sorted函数
sorted函数用于对流中的元素进行排序。例如,如果我们有一个整数列表,我们可以使用sorted函数对元素进行排序:
List<Integer> list = Arrays.asList(5, 4, 3, 2, 1);
List<Integer> sortedList = list.stream()
.sorted()
.collect(Collectors.toList());
7. limit函数
limit函数用于从流中截取指定数量的元素。例如,如果我们有一个整数列表,我们可以使用limit函数截取前三个元素:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
List<Integer> limitedList = list.stream()
.limit(3)
.collect(Collectors.toList());
8. distinct函数
distinct函数用于从流中去除重复的元素。例如,如果我们有一个整数列表,我们可以使用distinct函数去除重复的元素:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 5, 4, 3, 2, 1);
List<Integer> distinctList = list.stream()
.distinct()
.collect(Collectors.toList());
9. collect函数
collect函数用于将流中的元素收集到一个容器中。例如,如果我们有一个整数列表,我们可以使用collect函数将元素收集到一个集合中:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Set<Integer> set = list.stream()
.collect(Collectors.toSet());
10. findFirst函数
findFirst函数用于从流中获取第一个元素。例如,如果我们有一个整数列表,我们可以使用findFirst函数获取第一个元素:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Optional<Integer> first = list.stream()
.findFirst();
以上是Java函数式编程中常用的一些函数操作,它们可以帮助我们更方便地处理流式数据。
