Java中模仿函数思维
2016-06-28 11:10
591 查看
函数思维
函数式编程的核心是函数,就像面向对象语言的主要抽象方法是类。函数为流程构建了功能模块,并具有传统命令式语言中所不具有的一些功能。Java中没有独立的函数,下面几段代码只是用来模仿一下函数的编程思维。FuncTion.java
package com.cloud.day2; public interface FuncTion { /*这里说明一下:3个点表示可以传一个或者多个参数*/ public Object invoke(Object...o); } |
MyTest1.java
package com.cloud.day2; import java.util.Arrays; public class MyTest1 { public static void main(String[] args) { Object[] arr = new Object[]{1,2,3,4,5}; map(arr,new FuncTion() { @Override public Object invoke(Object ...o) { return (Integer)o[0]*2; } }); System.out.println(Arrays.toString(arr)); /*输出:[2, 4, 6, 8, 10]*/ } public static void map(Object[] arr,FuncTion function){ for(int i = 0;i<arr.length;i++){ arr[i] = function.invoke(arr[i]); } } } |
MyTest2.java
package com.cloud.day2; public class MyTest2 { public static void main(String[] args) { // Object sum = sum(new Object[]{1,2,3,4}); // System.out.println(sum);/*Output:10*/ Object str = toStr(new Object[]{1,2,3,4}); System.out.println(str);/*Output:1234*/ } /** * 字符串转换函数 * @param objects * @return */ public static Object toStr(Object[] objects){ return reduce(objects, "", new FuncTion() { @Override public Object invoke(Object... o) { System.out.println("------------------"); System.out.println(o[0]); System.out.println(o[1]); System.out.println("------------------"); return o[0].toString()+o[1]; } }); } /** * 求和函数 * @param arr * @return */ public static Object sum(Object[] arr){ return reduce(arr, 0, new FuncTion() { @Override public Object invoke(Object... o) { return (Integer)o[0]+(Integer)o[1]; } }); } /** * 程序处理函数 * @param arr * @param init * @param f * @return */ public static Object reduce(Object[] arr,Object init,FuncTion f){ Object sum = init; for(int i=0;i<arr.length;i++){ sum = f.invoke(sum,arr[i]); System.out.println("循环中的sum="+sum); } System.out.println("循环结果sum="+sum); return sum; } } |
输出结果
------------------1
------------------
循环中的sum=1
------------------
1
2
------------------
循环中的sum=12
------------------
12
3
------------------
循环中的sum=123
------------------
123
4
------------------
循环中的sum=1234
循环结果sum=1234
1234
相关文章推荐
- MyBatis入门第1天--MyBatis基础知识(一)
- Myeclipse下不用dom4j等解析xml文档
- Mybatis框架学习(三)—高级映射,延迟加载
- 大数乘法与大数加法 java实现
- myeclipse搭建maven后报错log4j类找不到
- jdk各版本下载
- SHA加密算法Java实现
- java中double和float精度丢失问题及解决方法
- java学习之编译时类型和运行时类型
- java 获取后台返回json 并js循环利用
- Mondrian在eclipse中的源码配置
- maven项目构建spring项目
- springboot开发记录
- java与OC比较
- spring boot在Eclipse中,修改代码后无需重启就生效的配置
- SpringMVC各种参数的绑定
- 为什么要用Java泛型
- java安全框架-Shiro学习笔记(五)-Shiro集成Web
- spring boot 指定maven package命令生成的jar文件名
- Java如何Excel转Html