lambda表达式

Lambda表达式应用

扶醉桌前 提交于 2020-02-11 09:32:36
Lambda表达式实际上是一个匿名函数,它可以说是对LINQ的补充。 由于LINQ查询关键字和IEnumerable接口的方法之间有一个对应关系,但是LINQ查询表达式中可以使用的查询功能很少。 在实际开发中通过查询结果或数据源进行方法调用,从而进行更多的查询操作。 由于Lambda表达式是匿名函数,它可以赋值到一个委托,而在IEnumerable接口的方法中很多通过函数委托来实现自定义运算、条件等操作,所以Lambda表达式在LINQ中被广泛使用。 详情请查阅:https://www.php.cn/csharp-article-353245.html 根据条件查询 /// <summary> /// 根据条件查询 /// </summary> /// <param name="UserID"></param> /// <returns></returns> public List<User> GetUser(string UserID) { using (FamilyServerEntities Family = new FamilyServerEntities()) { List<User> users = Family.User.Where(a => a.UserID == UserID).ToList(); return users; } } 根据条件修改 ///

lambda表达式

让人想犯罪 __ 提交于 2020-02-08 21:34:02
学习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即: ? 1 2 3 4 5 6 7 8 # 普通条件语句 if 1 = = 1 : name = 'wupeiqi' else : name = 'alex' # 三元运算 name = 'wupeiqi' if 1 = = 1 else 'alex' 对于简单的函数,也存在一种简便的表示方式,即:lambda表达式 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # ###################### 普通函数 ###################### # 定义函数(普通方式) def func(arg): return arg + 1 # 执行函数 result = func( 123 ) # ###################### lambda ###################### # 定义函数(lambda表达式) my_lambda = lambda arg : arg + 1 # 执行函数 result = my_lambda( 123 ) 来源: https://www.cnblogs.com/Guido-admirers/p/6126422.html

jdk8新特性Lambda表达式

不羁岁月 提交于 2020-02-01 01:09:41
@FunctionalInterface interface IntNumber { int count(int i); default int add(int x,int y){ return x + y; } } public class LambdaDemo{ public static void main(String[] args){ IntNumber i1 = (i)-> i*2; System.out.println(i1.count(100)); } } @FunctionalInterface 注解表示一个函数接口 #表达式 #()内是所需的参数,返回值为i*2 (100) -> i*2; #default add方法,default关键字在jdk8中新增加的,底层默认实现 #静态方法的引用,表达式 引用静态方法: 类名称::static方法名称; 例: //P描述参数,R描述返回值 @FunctionalInterface interface IFunction<P,R>{ public R change(P p); } public class JavaDemo { public static void main(String[] args){ IFunction<Integer,String> fun = String :: valueOf; System

Lambda表达式

被刻印的时光 ゝ 提交于 2020-01-24 01:53:46
1.Lambda表达式 1.1Lambda表达式的标准格式 ♦格式: (形式参数)->{代码块} ♦形式参数:如果有多个参数,参数之间用逗号隔开;如果没有参数,留空即可->:由英 文中画线和大于符号组成,固定写法。代表指向动作 ♦代码块:是我们具体要做的事情,也就是以前我们写的方法体内容 ♦组成Lambda表达式的三要素: 形式参数,箭头,代码块 1.2Lambda表达式 Lambda表达式的使用前提 ①有一个接口 ②接口中有且仅有一个抽象方法 1.3Lambda表达式的省略模式 省略的规则 参数类型可以省略。但是有多个参数的情况下,不能只省略一个 如果参数有且仅有一个,那么小括号可以省略 如果代码块的语句只有一条,可以省略大括号和分号,和return关键字 1.4Lambda表达式的注意事项 使用Lambda必须要有接口,并且要求接口中有且仅有一个抽象方法 必须有上下文环境,才能推导出Lambda对应的接口 ◆根据局部变量的赋值得知Lambda对应的接口 Runnable r = ( ) - > System . out . println ( "Lambda表达式" ) ; ◆根据调用方法的参数得知Lambda对应的接口 new Thread ( ( ) - > System . out . println ( "Lambda表达式" ) ) . start ( ) ; 1

资料搜集-JAVA系统的梳理知识8-JDK8

柔情痞子 提交于 2020-01-23 21:01:37
> 本文由 JavaGuide 翻译,原文地址:https://www.baeldung.com/foreach-java ## 1 概述 在Java 8中引入的*forEach*循环为程序员提供了一种新的,简洁而有趣的迭代集合的方式。 在本文中,我们将看到如何将*forEach*与集合*一起*使用,它采用何种参数以及此循环与增强的*for*循环的不同之处。 ## 2 基础知识 ```Java public interface Collection<E> extends Iterable<E> ``` Collection 接口实现了 Iterable 接口,而 Iterable 接口在 Java 8开始具有一个新的 API: ```java void forEach(Consumer<? super T> action)//对 Iterable的每个元素执行给定的操作,直到所有元素都被处理或动作引发异常。 ``` 使用*forEach*,我们可以迭代一个集合并对每个元素执行给定的操作,就像任何其他*迭代器一样。* 例如,迭代和打印字符串集合*的*for循环版本: ```java for (String name : names) { System.out.println(name); } ``` 我们可以使用*forEach*写这个 : ```java names.forEach

Lambda表达式类型检查

心不动则不痛 提交于 2020-01-22 22:37:59
表达式类型检查 参数类型检查 public class App3 { //方法作为类型参数 public static void test ( MyInnerFace < String , List > inter ) { List < String > list = inter . strategy ( "hello" , new ArrayList ( ) ) ; System . out . println ( list ) ; } public static void main ( String [ ] args ) { test ( new MyInnerFace < String , List > ( ) { @Override public List strategy ( String s , List list ) { list . add ( s ) ; return list ; } } ) ; test ( ( x , y ) - > { y . add ( x ) ; return y ; } ) ; } } //定义函数式的接口 @FunctionalInterface interface MyInnerFace < T , R > { /** * * @param t 泛型参数 * @param r 泛型参数 * @return */ R

List中Stream和Lambda表达式

蓝咒 提交于 2020-01-22 17:06:36
创建 通过数组创建 Arrays . stream; 通过集合创建 //普通流 集合对象 . stream ( ) ; //并行流 集合对象 . parallelStream ( ) ; 创建空的流 Stream . empty ( ) ; 创建无限流 //创建无限流,通过limit提取指定大小 Stream . generate ( ) 创建规律的无线流 Stream . iterate ( ) 方法 collect(toList())&filter collect(toList())的作用是通过一个Stream对象生成List对象,当流执行了collect方法才会触发之前的转换操作 filter用于过滤Stream中的元素,filter方法是一个高阶函数,接受一个函数接口作为参数,此高阶函数返回一个boolean值,返回true的元素会被保留下来 高阶函数:接收或者返回一个函数接口的函数成为高阶函数 函数接口:只包含一个函数的接口称为函数接口 map map函数的作用是将流中的一个值转换成一个新值,即将一个List转换为另一个list,可以更改List中的值(转换流,将一种类型的流转换为另外一种流) flatMap floatMap:将多个Stream连接成一个Stream max&min 求List的最大值或者最小值,需要指定对比依据 reduce 从一组值中生成一个新的值

Python 函数和lambda表达式

≡放荡痞女 提交于 2020-01-21 04:44:09
文章目录 函数入门 定义函数 编写帮助文档 多个返回值 递归函数 函数的参数 关键字参数 参数默认值 可变参数(参数收集) 逆向参数收集 变量作用域 遮蔽 局部函数 高级内容 赋值给参数 作为函数的形参 作为返回值 局部函数和lambda表达式 函数入门 定义函数 可以先调用后定义 def 方法名 ( 形参列表 ) : pass 返回值 def my_max ( x , y ) : z = x if x > y else y return z 编写帮助文档 在第二行用三个引号注释的内容就是帮助文档 查看: help ( my_max ) my_max__ . doc__ 多个返回值 可以包装成列表返回,或者直接返回,会自动包装成元组 def sum_and_avg ( list ) : pass return sum , sum / count #使用: s , a = sum_and_avg ( a_list ) 递归函数 注意递归方向 函数的参数 关键字参数 可以这样调用: f ( v1 = 12 , v2 = 15 ) 但是关键字参数必须放在普通的位置参数 后面 参数默认值 带默认值的参数的默认值放在不带默认值的参数 后面 可变参数(参数收集) *形参名 def f ( * book, a ) : 只能有一个“普通”可变参数,位置任意

C#匿名函数和Lambda表达式

回眸只為那壹抹淺笑 提交于 2020-01-17 10:06:25
class Program { delegate void MyDelegate(string str); static void Main(string[] args) { //正常调用 MyDelegate myDelegate = new MyDelegate(CW); myDelegate("正常调用"); //匿名函数 MyDelegate myDelegate2 = delegate (string str) { Console.WriteLine(str); }; myDelegate("匿名函数"); //Lambda表达式 MyDelegate myDelegate3 = (string str) => { Console.WriteLine(str); }; myDelegate3("Lambda表达式"); Console.ReadKey(); } static void CW(string str) { Console.WriteLine(str); } } 来源: https://www.cnblogs.com/xiaobao2017/p/12204320.html

lambda表达式操作集合数据(下)

拈花ヽ惹草 提交于 2020-01-16 13:35:34
//4.Stream中常见的api操作 List<String> accountList = new ArrayList<>(); accountList.add("songjiang"); accountList.add("lujinyi"); accountList.add("wuyong"); accountList.add("linchong"); accountList.add("luzhishen"); accountList.add("likui"); accountList.add("wusong"); //1.map中间操作,map()方法接受一个Functional接口 accountList = accountList.stream().map(x -> "梁山好汉" + x).collect(Collectors.toList()); accountList.forEach(System.out::println); //2.fiilter()添加过滤条件,过滤符合条件的用户 accountList = accountList.stream().filter(x -> x.length() > 5).collect(Collectors.toList()); accountList.forEach(System.out::println); //3