函数式变成思想

package cn._51doit.com03;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class MyListTest {
    public static void main(String[] args) {
       //函数式变成带来最大的好处就是,逻辑不必根数据绑定在一起
        //数据在集合里面了,但是有关逻辑确是单独一个函数

        List<String> words= Arrays.asList("Spark", "Hadoop", "Flink", "Hive", "Hbase");

        //包装模式
        //要想加载里面的元素,就必须先创建对象,然后把元素传进去
        MyList mylist = new MyList(words);
        //把逻辑传进去,然后,根据逻辑,进行编程
        //这是一个逻辑吧原来什么样编程什么样
        //在java里面可以传一个接口,输入什么,输出就是什么
        //创建一个匿名实现类,把这个匿名实现类传进去
        List<String> nlist = mylist.map(new MapFunction() {

            public String apply(String word) {
                return word.toUpperCase() +"2.0";
            }
        });


    }

}
package cn._51doit.com03;

import java.util.ArrayList;
import java.util.List;

public class MyList {
    private  List<String> words;
    //创建一个构造方法
    //此时传进来的数据是原来的数据,因为这些数据要在后面的方法中用,就把这些数据,赋给成员变量,到时候直接调用即可
    public MyList(List<String>words) {
        this.words = words;

    }
    //在这里创建一个map方法,然后再另一个类里面传进实参
    //这个扩展的map方法也是要写在list里面的 MapFunction 传进去,然后再调用的时候,会传具体的逻辑
    public List<String> map(MapFunction func){
        //定义一个新的list
        List<String> nlist = new ArrayList<>();

        //遍历旧的list,将旧的数据应用一下web传过来的函数,得到新的数据,再把新的数据加载到新的list里面
        for ( String word : words) {
            //应用外部传入的逻辑,得到一个新的单词
            String nword = func.apply(word);
            nlist.add(nword);


        }

        //返回新的nlist
        return nlist;
    }
}

 

 

package cn._51doit.com03;

//创建一个接口,然后把这个接口传到MyList里面
public interface MapFunction {
    //接口里面有一个方法,方法名可以随意叫,方法里面输入一个字符串,在返回一个string类型的字符串
    String apply(String word);

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值