函数思维
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