Lambda表达式与Stream流常见使用方式

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("普通方式");
    }
};

//Lambda
Runnable 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);

你可能感兴趣的:(lambda,stream)