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

银川网站建设seo排名优化的网站

银川网站建设,seo排名优化的网站,wordpress 腾讯云cdn,淘宝宝贝链接怎么做相关网站文章目录 Lambda函数式接口Lambda 规则规范简化过程改写 Arrays.setAll()改写 Arrays.sort() forEach循环 list 集合循环 list 集合并输出对象信息循环 Map 集合 方法引用和构造器引用方法引用构造器引用 Lambda Lambda是一个匿名函数,我们可以将Lambda表达式理解为…

文章目录

  • Lambda
  • 函数式接口
  • Lambda 规则规范
  • 简化过程
    • 改写 Arrays.setAll()
    • 改写 Arrays.sort()
  • forEach
    • 循环 list 集合
    • 循环 list 集合并输出对象信息
    • 循环 Map 集合
  • 方法引用和构造器引用
    • 方法引用
    • 构造器引用

Lambda

Lambda是一个匿名函数,我们可以将Lambda表达式理解为一段可以传递的代码(将代码像数据一样传递)。使用它可以写出简洁、灵活的代码。作为一种更紧凑的代码风格,使 java 语言表达能力得到提升。

基本语法

(parameters) -> expression 
或
(parameters) -> { statements }

函数式接口

函数式接口:只包含一个抽象方法的接口,并且可以使用 Lambda 表达式来创建该接口的对象。

  • 函数式接口: 有且仅有一个抽象方法的接口
  • Java 中的函数式编程体现就是 Lambda 表达式
  • 所以函数式接口即可以适用于 Lambda 使用的接口
public static void main(String[] args) {//使用匿名函数new Thread(new Runnable(){@Overridepublic void run(){System.out.println("我是没有使用Lambda表达式:不简洁");}}).start();
}//使用Lambda表达式new Thread(() -> System.out.println("我是使用Lambda表达式:简洁、灵活")).start();
}

可以在任意函数式接口上使用 @FunctionalInterface 注解,来检测它是否是符合函数式接口。同时 javac 也会包含一条声明,说明这个接口是否符合函数式接口。

// 通过
@FunctionalInterface
public interface Lock {public abstract String lockUp(String str1,String str2);  //上锁// public abstract void openLock();  //开锁
}
// 报错
@FunctionalInterface
public interface Lock {public abstract String lockUp(String str1,String str2);  //上锁public abstract void openLock();  //开锁
}

注意:自定义函数式接口时,@FunctionalInterface是可选的,就算不写这个注解,只要保证满 足函数式接口定义的条件,也照样是函数式接口。

Lambda 规则规范

Lambda 表达式在 java 语言中引入了一种新的语法元素和操作。这种操作符号为 “->” ,Lambda 操作符或箭头操作符,它将 Lambda 表达式分割为两部分。

  • 左边:指 Lambda 表达式的所有参数
  • 右边:指 Lambda 体,即表示 Lambda 表达式需要执行的功能

Lambda表达式省略规则

1.Lambda的标准格式(参数类型1 参数名1, 参数类型2 参数名2) -> {...方法体的代码...return 返回值;}
2.在标准格式的基础上()中的参数类型可以直接省略,因为编译器可以推断得出,称为“类型推断”(参数名1, 参数名2) -> {...方法体的代码...return 返回值;}
3.如果{}总的语句只有一条语句,则{}可以省略、return关键字、以及最后的“;”都可以省略(参数名1, 参数名2) -> 结果
4.如果()里面只有一个参数,则()可以省略参数名 -> 结果

简化过程

只有基于函数式接口的匿名内部类才能被 Lambda 表达式简化。下面使用 Lambda 简化函数式接口,改写 Arrays 方法代码。

改写 Arrays.setAll()

setAll 用于对数组进行批量更新。其作用是根据给定的函数更新数组中的每个元素。

语法如下:

public static <T> void setAll(T[] array, IntFunction<? extends T> generator)

  • array: 要更新的数组
  • generator: 一个 IntFunction,根据数组的索引生成新的值

需求如下:把所有元素 * 0.8

public class LambdaTest {public static void main(String[] args) {double[] prices = {99.8, 128, 100};//1.先用匿名内部类写法Arrays.setAll(prices, new IntToDoubleFunction() {@Overridepublic double applyAsDouble(int value) {// value = 0  1  2return prices[value] * 0.8;}});//2.使用Lambda表达式标准写法Arrays.setAll(prices, (int value) -> {return prices[value] * 0.8;});//3.使用Lambda表达式简化格式1——省略参数类型Arrays.setAll(prices, (value) -> {return prices[value] * 0.8;});//4.使用Lambda表达式简化格式2——省略()Arrays.setAll(prices, value -> {return prices[value] * 0.8;});//5.使用Lambda表达式简化格式3——省略{}Arrays.setAll(prices, value -> prices[value] * 0.8 );System.out.println(Arrays.toString(prices));}
}

改写 Arrays.sort()

sort 方法用于对数组进行排序

语法如下:

public static <T> void sort(T[] a, Comparator<? super T> c)

  • a: 要排序的对象数组
  • c: 自定义的比较器(Comparator

需求如下:对数组中的元素按照年龄升序排列

public class LambdaTest2 {public static void main(String[] args) {Student[] students = new Student[4];students[0] = new Student("张三", 169.5, 23);students[1] = new Student("李四", 163.8, 26);students[2] = new Student("王五", 163.8, 26);students[3] = new Student("赵六", 167.5, 24);//1.先用匿名内部类写法Arrays.sort(students, new Comparator<Student>() {@Overridepublic int compare(Student o1, Student o2) {return Double.compare(o1.getHeight(), o2.getHeight()); // 升序}});//2.使用Lambda表达式标准格式Arrays.sort(students, (Student o1, Student o2) -> {return Double.compare(o1.getHeight(), o2.getHeight()); // 升序});//3.使用Lambda表达式简化格式1——省略参数类型Arrays.sort(students, ( o1,  o2) -> {return Double.compare(o1.getHeight(), o2.getHeight()); // 升序});//4.使用Lambda表达式简化格式3——省略{}Arrays.sort(students, ( o1,  o2) -> Double.compare(o1.getHeight(), o2.getHeight()));System.out.println(Arrays.toString(students));}
}

forEach

forEach 是 Java 8 引入的一种简洁的方式,用于遍历集合中的每个元素。它是 Collection 接口和 Map 接口中的一个默认方法,支持函数式编程风格。forEach 方法可以与 Lambda 表达式或方法引用结合使用,简化了传统的迭代代码。

forEach 方法的定义如下:

void forEach(Consumer<? super T> action);
  • Consumer: 函数式接口,表示接受一个输入参数并对其进行操作而没有返回结果
  • T: 集合中元素的类型

循环 list 集合

List<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");
list.forEach(s -> System.out.println(s));

循环 list 集合并输出对象信息

public class UserVo {private String userName;public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}
}
List<UserVo> list = new ArrayList<UserVo>();
list.add(new UserVo());
list.add(new UserVo());
list.add(new UserVo());
list.forEach(s -> System.out.println(s.getUserName()));

循环 Map 集合

Map<String, UserVo> map = new HashMap<String, UserVo>();
map.put("A", new UserVo());
map.put("B", new UserVo());
map.put("C", new UserVo());

使用传统 forEach 循环

for (Map.Entry<String, UserVo> entry : map.entrySet()) {System.out.println(entry.getKey() + ":" + entry.getValue().getUserName());
}

使用 lambda 表达式

map.forEach(new BiConsumer<String, UserVo>() {@Overridepublic void accept(String k, UserVo v) {System.out.println(k + ":" + v.getUserName());}
});

简写

map.forEach((k,v) -> System.out.println(k + ":" + v.getUserName()));

方法引用和构造器引用

方法引用

当要传递给 Lambda 体的操作已经有实现方法,可以直接使用方法引用(实现抽象方法的列表,必须要和方法引用的方法参数列表一致)

方法引用使用操作符 :: 将方法名和类或者对象分割开来

有下列三种情况:

对象::实例方法
类::实例方法
类::静态方法
@FunctionalInterface
public interface Lock {public abstract void lockUp(String str);  //上锁
}
Lock lock = System.out::println;
lock.lockUp("测试......");

构造器引用

本质上构造器引用和方法引用相似,只是使用了一个 new 方法

使用说明:函数式接口参数列表和构造器参数列表要一致,该接口返回值类型也是构造器返回值类型

格式:ClassName :: new

@FunctionalInterface
public interface Lock {public abstract String lockUp(String str);  //上锁
}
// 非构造器引用
Lock lock1 = (s) -> new String(s);
// 构造器引用
Lock lock2 = String::new;

文章转载自:
http://freshness.przc.cn
http://eda.przc.cn
http://pastorate.przc.cn
http://mamelon.przc.cn
http://tongking.przc.cn
http://nutate.przc.cn
http://sawn.przc.cn
http://rocklike.przc.cn
http://tinplate.przc.cn
http://admiral.przc.cn
http://pathometer.przc.cn
http://nonstriker.przc.cn
http://millimho.przc.cn
http://speciology.przc.cn
http://osteologic.przc.cn
http://discontinuation.przc.cn
http://diamantiferous.przc.cn
http://insecticidal.przc.cn
http://disney.przc.cn
http://pliably.przc.cn
http://preachment.przc.cn
http://accountantship.przc.cn
http://quiescency.przc.cn
http://prong.przc.cn
http://concord.przc.cn
http://cisborder.przc.cn
http://acetarsone.przc.cn
http://quadrumanous.przc.cn
http://sicky.przc.cn
http://millepore.przc.cn
http://faa.przc.cn
http://semblable.przc.cn
http://synarthrosis.przc.cn
http://theologise.przc.cn
http://pandanaceous.przc.cn
http://undertaken.przc.cn
http://botanically.przc.cn
http://laceration.przc.cn
http://vehiculum.przc.cn
http://sally.przc.cn
http://feature.przc.cn
http://synostosis.przc.cn
http://souterrain.przc.cn
http://trellised.przc.cn
http://tawdry.przc.cn
http://soemba.przc.cn
http://trousering.przc.cn
http://undertip.przc.cn
http://immetrical.przc.cn
http://uppertendom.przc.cn
http://yordim.przc.cn
http://creswellian.przc.cn
http://hypostatize.przc.cn
http://antifluoridationist.przc.cn
http://jessamine.przc.cn
http://hyposulfurous.przc.cn
http://adsuki.przc.cn
http://euphuist.przc.cn
http://odontorhynchous.przc.cn
http://baton.przc.cn
http://scrod.przc.cn
http://exoderm.przc.cn
http://exequies.przc.cn
http://leniency.przc.cn
http://spicewood.przc.cn
http://workroom.przc.cn
http://spur.przc.cn
http://polymelia.przc.cn
http://scrub.przc.cn
http://sporeling.przc.cn
http://arrayal.przc.cn
http://shaven.przc.cn
http://parade.przc.cn
http://instructively.przc.cn
http://reversed.przc.cn
http://neuropharmacology.przc.cn
http://adverbially.przc.cn
http://dialog.przc.cn
http://cryptical.przc.cn
http://reprogram.przc.cn
http://deportable.przc.cn
http://hipe.przc.cn
http://exeunt.przc.cn
http://conferral.przc.cn
http://coverley.przc.cn
http://massasauga.przc.cn
http://prasadam.przc.cn
http://pyx.przc.cn
http://skywatch.przc.cn
http://unconstant.przc.cn
http://addle.przc.cn
http://evacuate.przc.cn
http://prehension.przc.cn
http://streaking.przc.cn
http://leman.przc.cn
http://nightglow.przc.cn
http://backstay.przc.cn
http://succus.przc.cn
http://donate.przc.cn
http://educationally.przc.cn
http://www.15wanjia.com/news/86534.html

相关文章:

  • 合肥网站建设q479185700惠互联网搜索引擎
  • 下载了网站建设asp网络营销环境分析包括哪些内容
  • 凡科网商城是正规网站吗百度人工客服在线咨询
  • 汕头做网站的公司18种最有效推广的方式
  • 网站模板拍卖网络推广外包流程
  • 做网站 创业最近的疫情情况最新消息
  • 建设网站软件海外seo推广公司
  • Wordpress页面有横线吉林关键词排名优化软件
  • 网络平台运营计划方案黑帽seo排名
  • 淄博网站建设相关文章宁波厂家关键词优化
  • 做音乐网站的目的和意义seo搜索优化费用
  • 免费建立手机网站企业qq一年多少费用
  • 做网站的好公司有哪些nba最新赛程
  • 外贸公司手机网站产品如何做市场推广
  • 万户做网站如何产品推销方案
  • 网站专题设计模板网站seo文章
  • wordpress用户爆破百度seo 站长工具
  • 现在做什么行业最赚钱最稳seo网站关键词优化报价
  • wordpress管理微信公众号安卓手机优化神器
  • wordpress建站企业seo策略是什么意思
  • 广州的兼职网站建设免费seo免费培训
  • 厦门网站关键词优化线上推广方式都有哪些
  • 网站动画用什么程序做抖音关键词优化
  • 淘宝京东拼多多购物券网站怎么做自助建站模板
  • 题库网站怎么做seo是什么seo怎么做
  • 李静做的化妆品网站seo具体怎么优化
  • 自己做的网站怎么上传到网络海淀seo搜索引擎优化公司
  • 菏泽网站建设哪家好云优客seo排名公司
  • 软件外包平台 接单网络推广seo公司
  • wordpress 评论回信优化关键词的作用