java实现scala的map方法,实现函数式编程
首先我们需要实现的是,数据在那里不动,有一个方法,可以接受方法作为参数,根据不同的方法,实现不同的结果返回.类似于scala中的函数作为参数进行传递.首先我们需要一个容器类,进行方法的定义:import java.util.List;/*** Created by zk on 2017/11/28.* 作用: PACKAGE_NAME.* 改造成返回自身,...
·
首先我们需要实现的是,数据在那里不动,有一个方法,可以接受方法作为参数,根据不同的方法,实现不同的结果返回.
类似于scala中的函数作为参数进行传递.
首先我们需要一个容器类,进行方法的定义:
import java.util.List;
/**
* Created by zk on 2017/11/28.
* 作用: PACKAGE_NAME.
* 改造成返回自身,可以不断的进行.map 的实现
*/
public class MyList {
private List<String> list;
public MyList(List<String> list) {
this.list = list;
}
/**
* map方法
* @param mapF
* @return
*/
public MyList map(MapFunction mapF){
for (int i = 0; i < list.size(); i++) {
String operate = mapF.operate(list.get(i));
//这里偷懒了一下,直接放到原来的list里面去了,可以新来一个List放入,再放回的
list.set(i,operate);
}
return this;
}
/**
* get方法
* @return
*/
public List<String> getList() {
return list;
}
}
我们再次定义需要实现的接口
public interface MapFunction {
/**
* 操作方法一
* @param str
* @return
*/
String operate(String str);
/**
* 操作方法二
* @param str
* @return
*/
//String filter(String str);
}
3.开始写案例
import java.util.ArrayList;
import java.util.List;
/**
* Created by zk on 2017/11/28.
* 作用: PACKAGE_NAME.
*/
public class FunctionDemo {
public static void main(String[] args) {
List<String> list= new ArrayList<String>();
list.add("hello");
list.add("zhaojun");
list.add("i miss you very much");
//匿名函数式的方法传递进去了,不想写实现类了,懒
MyList map = new MyList(list).map(new MapFunction() {
@Override
public String operate(String str) {
str += "zhoajun";
String upperCase = str.toUpperCase();
return upperCase;
}
}).map(new MapFunction() {
@Override
public String operate(String str) {
str += "zhaojun";
return str;
}
});
//这里还可以继续map下去,不断的进行实现
System.out.println(map.getList());
}
}
其实函数式编程,不是太难,只是用java的实现方式写起来太麻烦,所以转投了scala.,
我感觉函数式编程的思想是这样的,以前我们思考问题的方式是这样的,我要靠近一座大山,山动不了,我们自己走到山前面去,就靠近了,
现在函数式编程的思想是,我们不动了,山自己过来....相对于面向对象的编程思想,还是很有难度的.
Java Framework,欢迎各位前来交流java相关
QQ群:965125360
更多推荐
已为社区贡献4条内容
所有评论(0)