Lambda表达式是一个匿名函数,作用是简化代码,常见的使用方式:遍历集合、匿名内部类
普通遍历
Map<String, String> map = new HashMap<>();
map.put("1", "abc");
for (String key : map.keySet()) {
System.out.println("k=" + key + ",v=" + map.get(key));
}
使用 Lambda 进行遍历
map.forEach((k, v) -> {
System.out.println("k=" + k + ",v=" + v);
});
List 遍历
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.forEach(v -> {
System.out.println(v);
});
//list双冒号运算符遍历
list.forEach(System.out::println);
匿名内部类
Runnable r1 = new Runnable() {
@Override
public void run() {
System.out.println("普通方式");
}
};
//Lambda
Runnable r2 = ()-> System.out.println("Lambda表达式");
区别:使用匿名类与 Lambda 表达式的一大区别在于关键词的使用。对于匿名类,关键词 this 解读为匿名类,而对于 Lambda 表达式,关键词 this 解读为写就 Lambda 的外部类。
Stream流
Stream 的操作要以 lambda 表达式为参数,Stream流常见的使用方式就是对数据进行过滤
转换大写
List<String> list3 = Arrays.asList("zhangSan", "liSi", "wangWu");
List<String> list4 = list3.stream().map(String::toUpperCase).collect(Collectors.toList());
System.out.println("转换之后的数据:" + list4);
转换数据类型
List<String> list = Arrays.asList("1", "2", "3");
List<Integer> list1 = list.stream().map(Integer::valueOf).collect(Collectors.toList());
System.out.println("转换之后的数据:" + list1);
|