Lambda表达式是一个匿名函数,作用是简化代码,常见的使用方式:遍历集合、匿名内部类
普通遍历
Map 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 list = new ArrayList();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("普通方式"); }};//LambdaRunnable r2 = ()-> System.out.println("Lambda表达式");
区别:使用匿名类与 Lambda 表达式的一大区别在于关键词的使用。对于匿名类,关键词 this 解读为匿名类,而对于 Lambda 表达式,关键词 this 解读为写就 Lambda 的外部类。
Stream流
Stream 的操作要以 lambda 表达式为参数,Stream流常见的使用方式就是对数据进行过滤
转换大写
List list3 = Arrays.asList("zhangSan", "liSi", "wangWu");List list4 = list3.stream().map(String::toUpperCase).collect(Collectors.toList());System.out.println("转换之后的数据:" + list4);
转换数据类型
List list = Arrays.asList("1", "2", "3");List list1 = list.stream().map(Integer::valueOf).collect(Collectors.toList());System.out.println("转换之后的数据:" + list1);