栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Lambda&Stream

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Lambda&Stream

Lambda 表达式&Stream

Java 是一流的面向对象语言,除了部分简单数据类型,Java 中的一切都是对象,即使数组也是一种对象,每个类创建的实例也是对象。在 Java 中定义的函数或方法不可能完全独立,也不能将方法作为参数或返回一个方法给实例。

在java中,如果想要把某功能传递给某方法,需要写匿名类。

写一些代码的时候用Lambda 表达式极其方便。本质上就是匿名函数,很好理解,是一段可以传递的代码,使java的表达能力得到提升,表现为更加紧凑的代码风格。

示例:下面是对于排序的一种Lambda 表达式应用。

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Comparator;

public class Demo {

    public static void main(String[] args) {
        ArrayList list = new ArrayList<>();
                     list.add("b");
                     list.add("a");
                     list.add("c");
                     list.add("d");
                  
                  

          


           list.sort( (o1,o2)->{ return o1.compareTo(o2); } );

    }
}
Lambda 表达式简介

lambda表达式 又对匿名内部类语法进行了简化,直接将接口中的方法实现作为参数传递,lambda表达式又称为函数式编程

语法糖 可以使用更少的代码来实现同样的功能。

以下是一些 Lambda 表达式的例子:
无参数,无返回值,lambda 体中只有一行代码时,{}可以忽略
() -> System.out.println(“Hello World”);
无参数,有返回值
() -> { return 3.1415 };
有参数,无返回值
(String s) -> { System.out.println(s); }
有一个参数,无返回值
s -> { System.out.println(s); }
有多个参数,有返回值
(int a, int b) -> { return a + b; }
有多个参数,表达式参数类型可以不写,jvm 可以根据上下文进行类型推断
(a, b) -> { return a - b; }

功能接口(Functional interface)

功能接口只能有一个抽象方法。如果我们尝试在其中添加一个抽象方法,则会抛出编译时错误。

public interface Shape {
void area(int a,int b);
}


Shape d = (a, b)->{System.out.println(a+b);};
d.area(1, 2);
遍历输出

用 lambada 表达示遍历输出只需要一行即可。

//普通方式
List list = Arrays.asList(1, 2, 3, 4, 5, 6, 7);
for (Integer n : list) {
System.out.println(n);
}
// 使用 -> 的 Lambda 表达式
list.forEach(n -> System.out.println(n));
Stream流

Stream 是 Java8 的新特性,它允许你以声明式的方式处理数据集合,可以把它看作是遍历数据集的高级迭代器。

Stream提供了对集合元素更加丰富的操作(中间操作,终端操作)

实现一个操作(for 循环)。同时可以将这些操作链接起来,达到一种流水线式的效果:

集合–>流–>filter–>流–>sorted–>流–>map–>result

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class StreamDemo {

    public static void main(String[] args) {
        ArrayList list = new ArrayList<>();
                     list.add("b");
                     list.add("a");
                     list.add("c");
                     list.add("d");

        // 把集合或数组中的元素添加到Stream对象中去.
        Stream stream = list.stream();
        List list1 =  stream.filter( (e)->{ return e.equals("c"); }) //中间操作
            .collect(Collectors.toList()); //终端操作
        System.out.println(list1);//[c]
        System.out.println(list);


    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/850292.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号