Java函数式编程:10个常用的lambda函数
Java函数式编程是指在Java编程中使用函数式编程的思想和技术。Java 8引入了lambda表达式和函数式接口,使得在Java中编写函数式代码更加方便和简洁。下面是10个常用的lambda函数用法:
1. forEach:使用lambda表达式遍历集合中的元素,可以替代传统的for循环。
例如:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.forEach(n -> System.out.println(n));
2. filter:使用lambda表达式过滤集合中满足条件的元素,返回一个新的集合。
例如:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> filteredNumbers = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
3. map:使用lambda表达式对集合中的每个元素进行操作,返回一个新的集合。
例如:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> squaredNumbers = numbers.stream()
.map(n -> n * n)
.collect(Collectors.toList());
4. reduce:使用lambda表达式将集合中的元素组合成一个值。
例如:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
Integer sum = numbers.stream()
.reduce(0, (a, b) -> a + b);
5. sorted:使用lambda表达式对集合中的元素进行排序。
例如:
List<Integer> numbers = Arrays.asList(5, 2, 1, 4, 3);
List<Integer> sortedNumbers = numbers.stream()
.sorted((a, b) -> a.compareTo(b))
.collect(Collectors.toList());
6. distinct:使用lambda表达式对集合中的元素进行去重。
例如:
List<Integer> numbers = Arrays.asList(1, 2, 2, 3, 4, 4, 5);
List<Integer> distinctNumbers = numbers.stream()
.distinct()
.collect(Collectors.toList());
7. anyMatch:使用lambda表达式判断集合中是否有满足条件的元素。
例如:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
boolean hasEvenNumber = numbers.stream()
.anyMatch(n -> n % 2 == 0);
8. noneMatch:使用lambda表达式判断集合中是否没有满足条件的元素。
例如:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
boolean hasNegativeNumber = numbers.stream()
.noneMatch(n -> n < 0);
9. max和min:使用lambda表达式找出集合中的最大值和最小值。
例如:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
Optional<Integer> maxNumber = numbers.stream()
.max((a, b) -> a.compareTo(b));
10. count:使用lambda表达式统计集合中满足条件的元素个数。
例如:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
long evenNumbersCount = numbers.stream()
.filter(n -> n % 2 == 0)
.count();
以上是10个常用的lambda函数的用法,通过lambda表达式和函数式接口,可以简化代码的编写,使得Java的函数式编程更加灵活和高效。使用这些函数,可以方便地对集合进行操作和处理。从而提升开发效率和代码可读性。
