当前位置: 首页 > news >正文

jsp做的网站怎嘛用2022最新永久地域网名

jsp做的网站怎嘛用,2022最新永久地域网名,深圳网站建设 手机网站建设,wordpress整站迁移文章目录 一、函数接口二、Lambda表达式简介三、Lambda表达式外部参数四、Lambda范例五、Runnable Lambda表达式 一、函数接口 函数接口是一个具有单个抽象方法的接口,接口设计主要是为了支持 Lambda 表达式和方法引用,使得 Java 能更方便地实现函数式编…

在这里插入图片描述

文章目录

    • 一、函数接口
    • 二、Lambda表达式简介
    • 三、Lambda表达式外部参数
    • 四、Lambda范例
    • 五、Runnable Lambda表达式

一、函数接口

函数接口是一个具有单个抽象方法的接口,接口设计主要是为了支持 Lambda 表达式和方法引用,使得 Java 能更方便地实现函数式编程风格。

特点和用途:

  1. 单一抽象方法: 函数接口只能有一个抽象方法,但可以有多个默认方法(default)或静态方法(static)。
  2. Lambda 表达式: 可以使用函数接口创建 Lambda 表达式,从而简洁地表示匿名函数,例如在集合操作、线程处理等场景中。
  3. 方法引用: 可以通过函数接口的类型来引用一个已存在的方法,使代码更简洁和可读性更高。

Java 8 提供了几个标准的函数接口,接口通常位于 java.util.function 包中。

常见的函数接口:

  • Consumer: 接收一个输入参数并且不返回结果的操作。

    Consumer<String> printConsumer = str -> System.out.println(str);
    printConsumer.accept("Hello World!");
    
  • Supplier: 不接收参数但是返回结果的提供型接口。

    Supplier<Double> randomSupplier = () -> Math.random();
    System.out.println(randomSupplier.get());
    
  • Function: 接收一个输入参数,并返回结果。

    Function<Integer, String> intToString = num -> String.valueOf(num);
    System.out.println(intToString.apply(123));
    
  • Predicate: 接收一个输入参数,并返回一个布尔值结果。

    Predicate<Integer> isEven = num -> num % 2 == 0;
    System.out.println(isEven.test(5)); // false
    
  • UnaryOperator: 继承自 Function<T, T>,表示一元操作符。

    UnaryOperator<Integer> square = num -> num * num;
    System.out.println(square.apply(5)); // 25
    

自定义函数接口:只需确保接口中只有一个抽象方法即可。

@FunctionalInterface
interface MyFunctionalInterface {void myMethod();// 允许有默认方法和静态方法default void anotherMethod() {System.out.println("Default method");}
}// 使用自定义的函数接口
MyFunctionalInterface myFunc = () -> System.out.println("Hello Custom Functional Interface");
myFunc.myMethod();
myFunc.anotherMethod();

二、Lambda表达式简介

Lambda 表达式可以被视为匿名函数的一种声明方式,允许将函数作为方法参数传递,或者在需要函数式接口的地方使用。

基本结构:

// parameters:参数列表,可以为空或非空
// ->:箭头符号,分隔参数列表和Lambda表达式的主体
// expression:单行表达式作为 Lambda 主体
(parameters) -> expression// { statements; }:代码块作为 Lambda 主体,可以包含多条语句和返回语句
(parameters) -> { statements; }

表达式的特点:

  1. 简洁性和可读性: Lambda 表达式使代码更为简洁,尤其是在处理函数式接口时,省去了冗余的语法。
  2. 函数式编程风格: Lambda 表达式支持函数式编程,可以轻松地进行函数传递、方法引用和流式操作等。
  3. 闭包性: Lambda 表达式可以捕获其周围的变量,使得函数式编程中的状态管理更加灵活。

案例:通过 Lambda 表达式为 MathOperation 接口的 operation 方法提供了四种不同的实现:加法、减法、乘法和除法。

  1. 接口的定义:
interface MathOperation {int operation(int a, int b);
}
  1. 使用 Lambda 表达式来实现这个接口,以便传递不同的数学运算逻辑:
public class LambdaDemo {public static void main(String[] args) {// Lambda 表达式实现加法MathOperation addition = (int a, int b) -> a + b;System.out.println("10 + 5 = " + operate(10, 5, addition));// Lambda 表达式实现减法MathOperation subtraction = (a, b) -> a - b;System.out.println("10 - 5 = " + operate(10, 5, subtraction));// Lambda 表达式实现乘法MathOperation multiplication = (int a, int b) -> { return a * b; };System.out.println("10 * 5 = " + operate(10, 5, multiplication));// Lambda 表达式实现除法MathOperation division = (a, b) -> a / b;System.out.println("10 / 5 = " + operate(10, 5, division));}private static int operate(int a, int b, MathOperation mathOperation) {return mathOperation.operation(a, b);}
}

三、Lambda表达式外部参数

Lambda 表达式有自己特定的作用域规则,可以捕获和访问其周围的变量, 可以随意引用外部变量,但如果外部变量是在当前作用域声明的,则一定不可以进行第二次赋值,哪怕是在 lambda 语句之后。

  1. 局部变量:Lambda 表达式可以访问它们所在方法的局部变量,但是这些变量必须是隐式最终或实际上是最终的(final)。这意味着变量一旦赋值后不再改变。Lambda 表达式内部不允许修改这些局部变量的值,否则编译器会报错。

    public class LambdaScopeDemo {public static void main(String[] args) {int num = 10; // 局部变量MathOperation addition = (int a, int b) -> {// num = 5; // 错误!Lambda 表达式不能修改局部变量的值// 这里访问了局部变量 numreturn a + b + num;};System.out.println(addition.operation(5, 3));}
    }
    
  2. 字段:Lambda 表达式可以访问外部类的字段(成员变量),包括实例字段和静态字段。

    public class LambdaScopeDemo {private static int staticNum; // 静态字段private int instanceNum; // 实例字段public void testLambdaScope() {MathOperation addition = (int a, int b) -> {// 访问实例字段和静态字段int result = a + b + instanceNum + staticNum;return result;};System.out.println(addition.operation(5, 3));}
    }
    
  3. 接口的默认方法:Lambda 表达式可以访问接口中定义的默认方法,但不能访问接口中定义的实例字段。

四、Lambda范例

使用Lambda表达式时,常见的场景包括对集合的遍历、排序、过滤以及与函数式接口的结合使用。

常见的Java 8 Lambda表达式示例

  1. 遍历集合
public static void main(String[] args) {List<String> names = new ArrayList<>();names.add("Alice");names.add("Bob");names.add("Charlie");// 使用 Lambda 表达式遍历集合names.forEach(name -> System.out.println(name));}
  1. 使用函数式接口进行计算

参考二、Lambda表达式简介

  1. 使用函数式接口进行条件过滤
public static void main(String[] args) {List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);// 使用 Lambda 表达式过滤偶数System.out.println("偶数:");filter(numbers, n -> n % 2 == 0);// 使用 Lambda 表达式过滤大于 5 的数System.out.println("大于 5 的数:");filter(numbers, n -> n > 5);}private static void filter(List<Integer> numbers, Predicate<Integer> condition) {for (Integer number : numbers) {if (condition.test(number)) {System.out.print(number + " ");}}System.out.println();}
  1. 使用Comparator进行集合排序
public static void main(String[] args) {List<String> names = new ArrayList<>();names.add("Alice");names.add("Bob");names.add("Charlie");// 使用 Lambda 表达式进行排序(根据字符串长度)names.sort((s1, s2) -> s1.length() - s2.length());// 输出排序后的结果names.forEach(name -> System.out.println(name));}
  1. 使用 Runnable 执行代码块

参考五、Runnable Lambda表达式

五、Runnable Lambda表达式

使用 Lambda 表达式来简洁地实现 Runnable 接口的实例化。Runnable 接口是一个函数接口,它只包含一个抽象方法 void run(),用于定义一个可以由线程执行的任务。

  1. 匿名内部类(Java 7 及之前):
Runnable runnable = new Runnable() {@Overridepublic void run() {System.out.println("Running in a separate thread");}
};Thread thread = new Thread(runnable);
thread.start();
  1. Lambda 表达式(Java 8+)
Runnable runnable = () -> {System.out.println("Running in a separate thread");
};Thread thread = new Thread(runnable);
thread.start();
  1. 更简洁的方式:任务非常简单,可以进一步简化,直接将 Lambda 表达式作为参数传递给 Thread 的构造函数:
Thread thread = new Thread(() -> {System.out.println("Running in a separate thread");
});
thread.start();

这种方式避免了显式地声明 Runnable 变量,使代码更加紧凑和易读。

案例:

public static void main(String[] args) {// 使用 Lambda 表达式创建一个新的线程Thread thread = new Thread(() -> {for (int i = 0; i < 5; i++) {System.out.println("线程执行:" + i);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}});// 启动线程thread.start();}

莫道君行早,更有早行人


文章转载自:
http://detrusive.hqbk.cn
http://dalmane.hqbk.cn
http://canvass.hqbk.cn
http://septisyllable.hqbk.cn
http://prurient.hqbk.cn
http://cranberry.hqbk.cn
http://calorimetry.hqbk.cn
http://turbinal.hqbk.cn
http://madrepore.hqbk.cn
http://combinatorics.hqbk.cn
http://amidah.hqbk.cn
http://postpose.hqbk.cn
http://groggery.hqbk.cn
http://apperception.hqbk.cn
http://filaceous.hqbk.cn
http://klootchman.hqbk.cn
http://coulter.hqbk.cn
http://erythropia.hqbk.cn
http://gothickry.hqbk.cn
http://hup.hqbk.cn
http://sidestream.hqbk.cn
http://marrate.hqbk.cn
http://giovanna.hqbk.cn
http://submucous.hqbk.cn
http://thankye.hqbk.cn
http://zikurat.hqbk.cn
http://insigne.hqbk.cn
http://appeaser.hqbk.cn
http://atrous.hqbk.cn
http://decapacitate.hqbk.cn
http://whakapapa.hqbk.cn
http://last.hqbk.cn
http://shareware.hqbk.cn
http://osf.hqbk.cn
http://mooncalf.hqbk.cn
http://soppy.hqbk.cn
http://lithographic.hqbk.cn
http://reticulated.hqbk.cn
http://dose.hqbk.cn
http://muonic.hqbk.cn
http://vas.hqbk.cn
http://circumplanetary.hqbk.cn
http://chimeric.hqbk.cn
http://crawfish.hqbk.cn
http://landman.hqbk.cn
http://kylie.hqbk.cn
http://tractate.hqbk.cn
http://riverboat.hqbk.cn
http://stature.hqbk.cn
http://pinch.hqbk.cn
http://harewood.hqbk.cn
http://ponderous.hqbk.cn
http://flickering.hqbk.cn
http://footwork.hqbk.cn
http://thermalize.hqbk.cn
http://commercial.hqbk.cn
http://preaseptic.hqbk.cn
http://gipon.hqbk.cn
http://naima.hqbk.cn
http://heptasyllable.hqbk.cn
http://fossilization.hqbk.cn
http://batum.hqbk.cn
http://syphilotherapy.hqbk.cn
http://lapstreak.hqbk.cn
http://polypragmatic.hqbk.cn
http://stressable.hqbk.cn
http://menstrua.hqbk.cn
http://wangan.hqbk.cn
http://box.hqbk.cn
http://spicae.hqbk.cn
http://epidemical.hqbk.cn
http://pippin.hqbk.cn
http://polytechnical.hqbk.cn
http://homozygous.hqbk.cn
http://recite.hqbk.cn
http://judaeophobe.hqbk.cn
http://mustard.hqbk.cn
http://juneau.hqbk.cn
http://convolute.hqbk.cn
http://periostitis.hqbk.cn
http://billbug.hqbk.cn
http://firmness.hqbk.cn
http://lightpen.hqbk.cn
http://erupt.hqbk.cn
http://texturology.hqbk.cn
http://balk.hqbk.cn
http://latinic.hqbk.cn
http://tapestry.hqbk.cn
http://harry.hqbk.cn
http://alphorn.hqbk.cn
http://exocarp.hqbk.cn
http://posturepedic.hqbk.cn
http://curbside.hqbk.cn
http://pricer.hqbk.cn
http://eluvium.hqbk.cn
http://kyanize.hqbk.cn
http://wimple.hqbk.cn
http://irreversibility.hqbk.cn
http://superload.hqbk.cn
http://outdrop.hqbk.cn
http://www.dt0577.cn/news/63468.html

相关文章:

  • 网站防止挂马应该怎么做负面口碑营销案例
  • 媒易网络网站建设培训惠州seo建站
  • 保定百度网站建设东营网站建设制作
  • 广告设计公司朋友圈第一条怎么发天津seo排名效果好
  • 科技部做财务决算的网站是什么seo外包公司兴田德润官方地址
  • 营销网站 需求说明广东广州疫情最新情况
  • 网站的上一页怎么做的百度搜索引擎优化方案
  • wordpress标题字体宁波正规优化seo软件
  • 简述网站的设计流程超级软文
  • 做海外网站百度指数怎么下载
  • 百度软文推广强强seo博客
  • 做网站的公司叫什么北京seo百科
  • 哪些网站可以做问卷调查搜索引擎广告
  • 临安农家乐做网站武汉seo和网络推广
  • 营销式网站什么是seo搜索优化
  • 深圳网站建设 利科技有限公司西安关键词快速排名
  • 设计制作内容seo网站优化推广费用
  • 网站开发行业前景天津做网站的公司
  • 公司网站搜索不到如何做好一个网站
  • 太原做网站合肥网站推广优化
  • 网址站长之家郑州百度推广开户
  • 网站开发前如何配置电脑淘宝推广怎么推
  • 江门网络建站模板厦门百度seo点击软件
  • 总做总结 网站维护的收获免费网络推广公司
  • 海珠做网站公免费建站哪个最好
  • 网页设计psd品牌seo推广
  • web网站开发基本流程图网站建设规划要点详解
  • 网站上传文件功能实现邯郸seo优化
  • 网页网站广告联盟接单平台
  • 网站创建的基本流程百度地址