网站目标关键词,网页传奇辅助,ppt设计报价,可以做超链接或锚文本的网站有哪些一、Lambda 表达式简介
Lambda 表达式是一种简洁的函数式编程方式#xff0c;用于实现只有一个方法的接口#xff08;例如函数式接口#xff09;。
基本语法
(parameters) - expression
(parameters) - { statements; }
参数#xff1a;可以有零个或多个参数。…一、Lambda 表达式简介
Lambda 表达式是一种简洁的函数式编程方式用于实现只有一个方法的接口例如函数式接口。
基本语法
(parameters) - expression
(parameters) - { statements; }
参数可以有零个或多个参数。箭头操作符 (-)将参数与函数体分隔开。函数体可以是单行表达式也可以是包含多行语句的代码块。
示例
1. 使用匿名
Runnable runnable new Runnable() {Overridepublic void run() {System.out.println(传统方式Hello World!);}
};
new Thread(runnable).start();
2. 使用 Lambda 表达式
Runnable runnable () - System.out.println(Lambda 表达式Hello World!);
new Thread(runnable).start();
Lambda 表达式让代码更加简洁提高了可读性。 二、Stream API 简介
Stream 是 Java 8 引入的一个强大的 API用于处理集合中的数据流。它支持链式操作允许我们以声明式的方式处理数据。
Stream 的操作类型
中间操作返回一个新的 Stream如 filter、map、sorted 等。终止操作返回一个值或集合如 collect、reduce、count 等。 三、常见的 Stream 操作示例
1. List 转 Set
我们可以通过 Stream 将 List 转换为 Set去除重复元素。
import java.util.*;
import java.util.stream.Collectors;public class ListToSetExample {public static void main(String[] args) {ListInteger numbers Arrays.asList(1, 2, 3, 4, 2, 3, 1);// List 转 SetSetInteger uniqueNumbers numbers.stream().collect(Collectors.toSet());System.out.println(去重后的 Set: uniqueNumbers);}
}
输出
去重后的 Set: [1, 2, 3, 4] 2. Map 转 List
通过 Stream 可以将 Map 的键、值或者键值对转为 List。
import java.util.*;
import java.util.stream.Collectors;public class MapToListExample {public static void main(String[] args) {MapInteger, String map new HashMap();map.put(1, Java);map.put(2, Python);map.put(3, C);// Map 的键转为 ListListInteger keys map.keySet().stream().collect(Collectors.toList());// Map 的值转为 ListListString values map.values().stream().collect(Collectors.toList());// Map 的键值对转为 ListListString entries map.entrySet().stream().map(entry - entry.getKey() entry.getValue()).collect(Collectors.toList());System.out.println(键列表: keys);System.out.println(值列表: values);System.out.println(键值对列表: entries);}
}
输出
键列表: [1, 2, 3]
值列表: [Java, Python, C]
键值对列表: [1Java, 2Python, 3C] 3. 过滤Filter
通过 filter 方法可以对集合中的元素进行筛选。
import java.util.*;
import java.util.stream.Collectors;public class FilterExample {public static void main(String[] args) {ListString names Arrays.asList(Alice, Bob, Charlie, David);// 筛选名字长度大于 3 的元素ListString filteredNames names.stream().filter(name - name.length() 3).collect(Collectors.toList());System.out.println(筛选后的名字: filteredNames);}
}
输出
筛选后的名字: [Alice, Charlie, David] 4. 求和
通过 reduce 方法可以对数字集合进行累加。
import java.util.*;public class SumExample {public static void main(String[] args) {ListInteger numbers Arrays.asList(1, 2, 3, 4, 5);// 求和int sum numbers.stream().reduce(0, Integer::sum);System.out.println(总和: sum);}
}
输出
总和: 15 5. 分组
通过 Collectors.groupingBy 方法可以对集合中的元素进行分组。
import java.util.*;
import java.util.stream.Collectors;public class GroupingExample {public static void main(String[] args) {ListString names Arrays.asList(Alice, Bob, Charlie, David, Daniel);// 按名字长度分组MapInteger, ListString groupedByLength names.stream().collect(Collectors.groupingBy(String::length));System.out.println(按名字长度分组: groupedByLength);}
}
输出
按名字长度分组: {3[Bob], 5[Alice, David], 7[Charlie, Daniel]} 6. Map 和 Reduce 操作
Map将元素映射为另一种类型。Reduce将多个值归约为一个值。
Map 示例
import java.util.*;public class MapExample {public static void main(String[] args) {ListString names Arrays.asList(alice, bob, charlie);// 将名字转换为大写ListString upperCaseNames names.stream().map(String::toUpperCase).collect(Collectors.toList());System.out.println(转换为大写: upperCaseNames);}
}
输出
转换为大写: [ALICE, BOB, CHARLIE]
Reduce 示例
import java.util.*;public class ReduceExample {public static void main(String[] args) {ListInteger numbers Arrays.asList(1, 2, 3, 4, 5);// 计算乘积int product numbers.stream().reduce(1, (a, b) - a * b);System.out.println(乘积: product);}
}
输出
乘积: 120