java实现scala的map方法,实现函数式编程

来源:互联网 发布:多益网络客户端 编辑:程序博客网 时间:2024/05/22 13:39

首先我们需要实现的是,数据在那里不动,有一个方法,可以接受方法作为参数,根据不同的方法,实现不同的结果返回.

类似于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., 


我感觉函数式编程的思想是这样的,以前我们思考问题的方式是这样的,我要靠近一座大山,山动不了,我们自己走到山前面去,就靠近了,

现在函数式编程的思想是,我们不动了,山自己过来....相对于面向对象的编程思想,还是很有难度的.


zhaojun这周日,12月3日,考试普通话,她肯定能够考过去的,我相信她



阅读全文
1 0
原创粉丝点击