java 函数式编程

比较金典的例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | import lombok.AllArgsConstructor; import lombok.Data; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; import java.util.Arrays; import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; public class CompletableFutureMallDemo { static List<NetMall> list= Arrays.asList( new NetMall( "jd" ), new NetMall( "dangdang" ), new NetMall( "taobao" ) ); public static List<String> getPrice(List<NetMall> list,String productName){ return list.stream().map( netMall -> String.format(productName + " in %s price is %.2f" , netMall.getNetMallName(), netMall.calcPrice(productName))) .collect(Collectors.toList()); } public static List<String> getPriceByCompletableFuture(List<NetMall> list,String productName){ return list.stream().map(netMall -> CompletableFuture.supplyAsync(() -> String.format(productName + " in %s price is %.2f" , netMall.getNetMallName(), netMall.calcPrice(productName)) )).collect(Collectors.toList()) .stream().map(s -> s.join()).collect(Collectors.toList()); } public static void main(String[] args) { long starTime=System.currentTimeMillis(); List<String> list1= getPrice(list, "mysql" ); for (String element:list1){ System.out.println(element); } long endTime=System.currentTimeMillis(); System.out.println( "-------------costTime:" +(endTime-starTime)+ "毫秒" ); System.out.println( "-----------------" ); long starTime1=System.currentTimeMillis(); List<String> list2= getPriceByCompletableFuture(list, "mysql" ); for (String element:list2){ System.out.println(element); } long endTime1=System.currentTimeMillis(); System.out.println( "-------------costTime:" +(endTime1-starTime1)+ "毫秒" ); } } class NetMall{ @Getter private String netMallName; public NetMall(String netMallName) { this .netMallName = netMallName; } public double calcPrice(String productName){ try { TimeUnit.SECONDS.sleep( 1 ); } catch (InterruptedException e) { e.printStackTrace(); } return ThreadLocalRandom.current().nextDouble()* 2 +productName.charAt( 0 ); } } @AllArgsConstructor @NoArgsConstructor @Data @Accessors (chain = true ) class Student{ private Integer id; private String studentName; private String major; } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
2019-09-01 Storm大数据实时计算
2016-09-01 SqlServer基础语法(三)