首页 > 编程知识 正文

java多线程编程实例,java treemap

时间:2023-05-05 12:43:35 阅读:38004 作者:4102

函数式编程是目前常用的编程方式,许多新的编程语言都支持函数式编程。 她与传统的指令型编程不同,可以将函数(执行代码的过程)作为参数传递。 JAVA也意识到了函数式编程的重要性,2014年Oracle终于发布了JAVA8的版本。 添加了函数编程、Lambda表达式和流等新特性。 正因为有了这些新功能,我们以后写JAVA代码的时候,会有新的选择。

善于使用函数式编程开发,使代码更简洁优雅,可读性也更高。 但是,从指令型编程过渡到函数型编程还是需要努力的。 因为在编码的思维方式上,两种开发模式真的差别很大。 因此,相当数量的JAVA开发人员热衷于使用传统的开发方式。

尽管如此,函数式编程毕竟是今后编码开发的方向。 因为她更优雅,开发效率更高,所以我觉得从现在开始应该更熟悉函数型编程哦。 我想今后一定可以使用了。 关于Lambda公式,我也还是个初学者,觉得不好用。 很多时候,有明确的目标的时候,我不知道用什么样的方法,或者怎么用那个方法来达到自己的目的。 因此,最近我自己也制作了Lambda的例子,帮助学习。 虽然还有效果,但我也想在这里分享。 欢迎您的指正。

lambda表达式示例

另一方面,stream、filter、map、reducepublicstaticvoidmain (string [ ] args (list list=arrays.as list (' max ',' min ',lon ) ) system.out.println (以' m开头的数为' sum ); int sum2=list.stream ().maptoint(string:3360length ).reduce((s,item )- s item ).getAsInt ); System.out.println ('所有字符长度总和:' sum2); intsum3=list.stream ((.filter (str-str.starts with ) ' m ).maptoint (string 3360: length ) ) ) s system.orth }

1.stream ) )方法为集合打开了一个流,通过该流,开发人员可以操作一系列操作,包括过滤、映射、分组和计算。

2.filter ) )是过滤的方法。 第一个示例找到以m字符开头的单词,过滤为新流,然后计算单词的数量。

3.mapToInt ) )是一种映射方法,根据单词的长度映射到新流。 新流是关于单词长度的集合。

4.reduce ) )是计算的方法,根据单词长度集合的流程加上单词长度,并返回最终结果。

二.关于collect、groupingBy

创建一个User类,以便以后添加到集合中

公共类用户{私有用户名称; 私密int age; 私密int sex; 公共用户()公共用户(字符串名称,int age ) {super ); this.name=name; this.age=age; }公共用户(字符串名称、int age、int sex ) {super ); this.name=name; this.age=age; this.sex=sex; }public String getName (() {return name; }公共语音集名称(字符串名称) {this.name=name; }public int getAge () {return age; }公共语音设置(intage ) {this.age=age; }public int getSex () {return sex; }publicvoidsetsex(intsex ) {this.sex=sex; [电子邮件保护]字符串tostring () return'user ) name='name ',age=' age ',sex=' sex '] ' ); }

生成用于生成用户集合的List工具类

import java.util.ArrayList; import java.util.List; publicclasslistutil { publicstaticlistgetuserlist (} { useru1=new user (' lilei ',20,1 ); useru2=newuser('limei ',31,1 ); useru3=newuser('min ',12,0 ); useru4=newuser('max ',33,0 ); useru5=newuser('test ',35,0 ); 列表列表=new ArrayList (; list.add(U1; list.add(U2; list.add(U3; list.add(U4; list.add(U5; 返回列表; }

在上述类的帮助下,编写针对新集合和分组的示例import java.util.ArrayList; import java.util.List; import java.util.Map; import Java.util.stream.collectors; public class SecondTest {/** *获取每个用户的年龄,生成新数组,然后单击“email protected (已取消保护)”(专用静态语音获取) //获取每个用户的年龄,生成新数组,并打印system.out.println(n )。 listagelist2=list.stream(.map ) user:getage ).collect () collectors.tolist ); ageList2.stream ().foreach ) obj-{system.out.print ) obj't ' ); ); system.out.println(n ); }/** * (按性别计算总年龄的“email protected (已取消检查)”(publicstaticvoidgetmanuseragesum ) ) { list list=list util.get userell } mapmap=list.stream((.collect ) collectors.groupingby ) user33603360getsex,Collectors.reducing(0) 0,user 333366660 “[emailprotected]({ 'unchecked ',' raw types ' } (publicstaticvoidmain (字符串[ ] args )//获取每个用户的年龄,由年龄组成的新}

1.getAllUserAge ()方法获取每个用户的年龄,并将用户的年龄组合到新集合中。 collect ) collectors.tolist ) )用于转换为ArrrayList类。

2.getManUserAgeSum ()方法按性别对所有用户进行分类,计算每个性别的年龄之和。 通过groupingBy方法实现。 其中groupingBy ) )接收两个参数。 第一个参数指定group by的目标,第二个参数表示分组后必须执行的操作。 最后,方法返回Map对象。 性别是关键,年龄之和是值。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。