Lambda表达式

Lambda表达式主要用于替换函数式接口,对于匿名内部类的写法可以进行极限简化,去掉冗余代码

Lambda固定写法 “ -> ”左侧为形式参数,右侧为代码块(将要执行的方法体)

/*
(匿名内部类被重写方法的形参列表) -> {被重写方法的方法体
}
Lambda表达式只能简化函数式接口
极限省略规则:
1. 如果lambda表达式方法体只有一行,可以省略大括号不写,同时省略分号
2. 根据1:如果这行式return语句,则return必须省略,分号也要省略
3. 参数类型可以省略不写
4. 如果只有一个参数,参数类型可以忽略,()也可以忽略
*/

函数式接口

  • 函数式接口是指该接口中只有一个抽象方法的接口,在函数式接口上会标有注解–> @FuntionalInterFace
//如下为函数式接口
@FunctionalInterface
public interface InterfaceA {//函数式接口- - - - - -> 注解FunctionalInterface,只包含一个抽象方法的接口void run();
}

Lambda简化Runnable创建线程

public class Demo {public static void main(String[] args) {//Runnable - - ->FunctionnalInterface函数式接口//Runnable接口创建线程的Lambda写法Thread t = new Thread(() -> {    System.out.println(Thread.currentThread().getName()+"线程执行~~~");});t.start();//继续简化:同样是Runnable接口方式new Thread(() -> {          System.out.println(Thread.currentThread().getName()+"执行~~~");});//极限简化:省略大括号,三行变一行new Thread(() -> System.out.println(Thread.currentThread().getName()+"执行~~~"));/*理解如:Thread类提供了专门存放Runnable对象作为形参的构造器  源码如下:public Thread(Runnable target)尽管在上述Lambda写法中并未出现Runnable关键字但是Java会自动识别这是Runnable对象又因为:Runnable只有一个抽象方法所以Java会自动判断出来执行run方法*/}
}

Lambda简化Comparator比较器

public class Student {private String name;private int age;private char sex;public Student() {}public Student(String name, int age, char sex) {this.name = name;this.age = age;this.sex = sex;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public char getSex() {return sex;}public void setSex(char sex) {this.sex = sex;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || this.getClass() != o.getClass()) return false;Student student = (Student) o;return age == student.age && sex == student.sex && name.equals(student.name);}@Overridepublic int hashCode() {return Objects.hash(name, age, sex);}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +", sex=" + sex +'}';}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;public class Demoo {public static void main(String[] args) {List<Student> lists = new ArrayList<>();Student stu1 = new Student("玩家1", 17, '男');Student stu2 = new Student("玩家2", 21, '女');Student stu3 = new Student("玩家3", 15, '男');Collections.addAll(lists,stu1,stu2,stu3);/*public static <T> boolean addAll(Collection<? super T> c, T... elements)可变参数,直接将数据全部存入*///下面按照年龄升序排序----->匿名内部类写法/*Collections.sort(lists, new Comparator<Student>() {@Overridepublic int compare(Student o1, Student o2) {return o1.getAge()-o2.getAge();}});*///Lambda表达式写法Collections.sort(lists,(Student o1, Student o2) -> {return o1.getAge()-o2.getAge();});//极限Lambda写法:如果方法体只有一行,如果是return,则return必须省略不写、参数类型也可以省略不写Collections.sort(lists,(o1, o2) -> o1.getAge() - o2.getAge());for (Student list : lists) {System.out.println(list);}}
}

使用Lambda表达式遍历集合

public static void main(String[] args) {Map<String, Integer> maps = new HashMap<>();//Lambda表达式遍历Map集合maps.forEach((k,v) -> System.out.println("key="+k+",value="+v));Set<Integer> sets = new TreeSet<>();//Lambda表达式遍历Set集合sets.forEach(set -> System.out.println("set="+set));//Lambda表达式遍历List集合List<Integer> lists = new ArrayList<>();lists.forEach(list -> System.out.println("list="+list));}

正则表达式

用于描述或匹配一系列符合某个语句规则的字符串

单个符号

  1. 英文句点. 用于匹配任意单个字符

    1. 表达式:t.t可以用于匹配txt、tet等
  2. 中括号[] 只有中括号内指定的字符才能参与匹配,也只能匹配单个字符
    1. 表达式:p[1234]p可以用于匹配p2p、p4p等
  3. |符号,表示“ 或 ”
    1. 表达式a[tt|pp|cc]x可用于匹配attx、appx等
  4. 转义符\,许多字符在正则表达式中有特殊含义所以通常在其之前加上\进行转义
    1. ​ \ \d表示单个数字字符(0-9)
  5. ^表示“ 否 ” 如[ ^ p] 表示第一个字符不能是字母p

快捷符号

  1. \d表示[0-9]
  2. \D表示[ ^0-9]
  3. \w表示[0-9A-Za-z]
  4. \W表示[ ^0-9A-Za-z]

表示次数的符号

符号 次数
* 0次或多次
+ 1次或多次
0次或1次
{ n } 恰好n次
{n , } 至少n次
{n , m} 至少n次,但是不超过m次

实例

public class Demoo {public static void main(String[] args) {String qqNum = "20729a8458";System.out.println(checkqq(qqNum));System.out.println("a".matches("[abc]"));System.out.println("a".matches("[^abc]"));System.out.println("1".matches("\\d"));//trueSystem.out.println("12".matches("\\d"));//falseSystem.out.println("a".matches("\\d"));//falseSystem.out.println("a".matches("\\w"));//trueSystem.out.println("2".matches("\\w"));//trueSystem.out.println("我".matches("\\w"));//falseSystem.out.println("A".matches("\\w"));//false/*仅能校验单个字符两个\\的原因是:第一个\要告诉第二个\“你就是个\”\\d只能是单个字符的数字\\D--->校验非数字\\w只能是单个字符的数字或者大小写字母(包含了下划线)*//*数量词判断x? x  ---->  一次或一次也没有x* x  ---->  零次或多次x+ x  ---->  一次或多次x{n} x  ---->  恰好n次x{n,} x  ---->  至少n次x{n,m} x  ---->  至少n次,但是不超过m次*//*核验密码*/System.out.println("asd1¥23".matches("\\w{6,12}"));/*核验验证码,不包含下划线*/System.out.println("asd2".matches("[a-zA-Z0-9]{4}"));System.out.println("=================================");/*核验邮箱*/String ema = "207yuqu@163.com";String ema1 = "2072988458@163.com.cn";String ema2 = "207yuqu@qq.com";System.out.println(checkEmail(ema));System.out.println(checkEmail(ema1));System.out.println(checkEmail(ema2));System.out.println("=============================");/*核验手机号*/String tel1 = "13523025288";String tel2 = "18736089926";System.out.println(checkTel(tel1));System.out.println(checkTel(tel2));}private static boolean checkTel(String tel) {return tel.matches("[01][35789]\\d{9,}");}private static boolean checkEmail(String ema) {return ema.matches("\\w{3,15}@\\w{2,12}(\\.\\w{2,10}){1,2}");}private static boolean checkqq(String qqNum) {//\\d判断是否纯数字,{}单值长度,双值表示长度范围return qqNum != null && qqNum.matches("\\d{4,}");//x{n,}  --代表-->  x至少出现n次  在此处表示数字至少有四个}
}

Lambda正则表达式相关推荐

  1. python 使用sort()函数和正则表达式(lambda)对os.listdir()获取的文件夹文件列表进行重新排序 乱序排序

    # 排序函数,对文件列表进行排序 # 排序函数,对文件列表进行排序(filenames为文件夹文件的文件名的字符串列表) def sort_filenames(filenames):# (1)可以以l ...

  2. 包 权限修饰符 final 常量 枚举 抽象类 接口 多态 内部类 常用API 正则表达式 Lambda

    包 什么是包? 包是用来分门别类的管理各种不同类的,类似于文件夹.建包利于程序的管理和维护. 建包的语法格式:package 公司域名倒写.技术名称.报名建议全部英文小写,且具备意义. package ...

  3. 刻意练习:LeetCode实战 -- Task18. 正则表达式匹配

    背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务.本期训练营采用分类别练习的模式,即选择了五个知识点(数组.链表.字符串.树.贪心算法),每个知 ...

  4. Python 之Re模块(正则表达式)

    一.简介 正则表达式本身是一种小型的.高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配. 二.正则表达式中常用的字符含义 1.普通字符和11个元字符: ...

  5. Python中re(正则表达式)模块函数学习

    2019独角兽企业重金招聘Python工程师标准>>> Python正则表达式指南 今天学习了Python中有关正则表达式的知识.关于正则表达式的语法,不作过多解释,网上有许多学习的 ...

  6. [Python正则表达式] 字符串中xml标签的匹配

    现在有一个需求,比如给定如下数据: 0-0-0 0:0:0 #### the 68th annual golden globe awards #### the king s speech earns ...

  7. python正则表达式模块_Python正则表达式函数模块

    今天学习了Python中有关正则表达式的知识.关于正则表达式的语法,不作过多解释,网上有许多学习的资料.这里主要介绍python中常用的正则表达式处理函数. 方法/属性 作用 match() 决定 R ...

  8. 如何设计一门语言(十)——正则表达式与领域特定语言(DSL)

    几个月前就一直有博友关心DSL的问题,于是我想一想,我在gac.codeplex.com里面也创建了一些DSL,于是今天就来说一说这个事情. 创建DSL恐怕是很多人第一次设计一门语言的经历,很少有人一 ...

  9. python中的正则表达式re模块_python中的正则表达式(re模块)

    一.简介 正则表达式本身是一种小型的.高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配.正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎 ...

最新文章

  1. Open3D 三维点云读取可视化、下采样、去除离群点、地面提取
  2. cramer定理_Lundberg-Cramer定理
  3. 热点的ap频段哪个快_WLAN中无线AP信道的划分
  4. Vue.js仿QQ音乐(移动端)
  5. python怎么导入数据集keras_python – 如何为Keras准备数据集?
  6. 计算机网络原理html,计算机网络原理与应用html..ppt
  7. 输入法快捷键_[秒杀必备]搜狗输入法自定义短语快捷键设置
  8. ubuntu中安装apache ab命令进行简单压力测试
  9. mysql 字段加减_Mysql数据清洗—Null值的处理技巧
  10. fw-cloud-framework项目配置、启动问题
  11. html翻译插件,翻译插件:ImTranslator
  12. DiskFileUpload 中文乱码 解决方法
  13. 【有利可图网】字体设计:英文字体的气质和选用详解(二)
  14. bootmgr快速修复win7_【win7共享软件下载】win7共享软件(局域网共享)下载 v7.2.8 免费版...
  15. 电商公司ERP管理软件与旺店通、第三方仓库以及云仓的贯通解决方案
  16. word批量调整图片大小:
  17. 负数除以整数的余数怎么算?
  18. 中国传统的节日(端午节)
  19. [经典面试题]排列组合专题
  20. DBA 职业迷茫何去何从

热门文章

  1. 【严重】vm2 <3.9.15 沙箱逃逸漏洞(CVE-2023-29017)
  2. 关于PCA主成分分析与KL变换
  3. 基于51单片机的全自动洗衣机设计
  4. windows编程之鼠标消息总结
  5. EPON技术基础知识
  6. 快速中值滤波——Python实现
  7. PID算法原理及模板讲解
  8. 冲量在线荣获2021年度长三角智慧城市建设典型实施案例奖,助力长三角一体化、高质量发展
  9. nginx请求转发被拒绝_解决nginx反向代理proxy不能转发header报头
  10. 汉字的国标码和机内码是怎么回事?