目录
Lambda表达式的基本语法
(参数列表) -> { 函数体 }
其中:
- 参数列表:包含Lambda表达式的参数。如果参数只有一个,则括号可以省略。如果参数没有,则必须保留空括号。
- ->:Lambda操作符,用于分隔参数列表和函数体。
- 函数体:包含Lambda表达式要执行的代码。
lambda表达式在集合中的应用
与Stream API的结合使得集合操作变得更加简洁和函数式。以下是一些lambda表达式在集合中的常见应用:
1. 过滤元素(Filtering):使用filter方法,可以根据某个条件过滤集合中的元素。
List<String> strings = Arrays.asList("Apple", "Banana", "Cherry", "Date");
List<String> filteredStrings = strings.stream()
.filter(s -> s.startsWith("A"))
.collect(Collectors.toList());
// filteredStrings 现在包含 "Apple" 和 "Apple"
2. 映射元素(Mapping):使用map方法,可以将集合中的元素转换成另一种形式。
List<String> strings = Arrays.asList("1", "2", "3");
List<Integer> numbers = strings.stream()
.map(Integer::parseInt) //将每个字符串转换为整数
.collect(Collectors.toList());
// numbers 现在包含 1, 2, 3
3. 排序元素(Sorting):使用sorted方法,可以对集合中的元素进行排序。
List<String> strings = Arrays.asList("Banana", "Apple", "Cherry");
List<String> sortedStrings = strings.stream()
.sorted()
.collect(Collectors.toList());
// sortedStrings 现在按字母顺序排序
4. 聚合操作(Aggregation):使用reduce方法,可以对集合中的元素进行聚合操作,如求和、求最大值等。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
Integer sum = numbers.stream()
.reduce(0, Integer::sum);
// sum 现在是 15
5. 收集到不同的集合类型(Collecting to Different Types):使用collect方法,可以将流中的元素收集到不同的集合类型中。
List<String> strings = Arrays.asList("Apple", "Banana", "Cherry");
Set<String> uniqueStrings = strings.stream()
.collect(Collectors.toSet());
// uniqueStrings 现在包含唯一的字符串
6. 查找元素(Finding Elements):使用findAny或findFirst方法,可以查找流中的元素。
List<String> strings = Arrays.asList("Apple", "Banana", "Cherry");
Optional<String> firstString = strings.stream()
.findFirst();
// firstString 现在包含 "Apple"
7. 去除重复元素(Removing Duplicates):使用distinct方法,可以去除流中的重复元素。
List<Integer> numbers = Arrays.asList(1, 2, 2, 3, 4, 4, 5);
List<Integer> uniqueNumbers = numbers.stream()
.distinct()
.collect(Collectors.toList());
// uniqueNumbers 现在包含唯一的数字
Lambda表达式和Stream API的结合使得集合操作更加声明式、简洁和易于理解。通过使用这些高级功能,你可以更加有效地处理集合数据,减少模板代码,并写出更加清晰和可维护的代码。