#paip.提升效率---filter map reduce 的java 函数式编程实现
========================================================
#----------------------index索引------------------
++函数式编程的好处儿以及缺点
++actual code 实际代码如下
---filter 实现...
--- map 实现..
---reduce
---调用

##函数式编程的好处儿以及缺点
----------------------------
从声明式编程 代替  命令式编程 的观点来看,函数式编程是个好东东..why >>>how
大多时间哈,,可以容易的理解..
大多时间哈,更是代码短....

但是,有时候,代码更多,更长的...估计是java7 没实现lambda 表达式造成的吧..
reduce 使用的递归,可能更多的对象生成,,以及堆栈溢出...毕竟,现在的电脑都是基于寄存器的...不是基于堆栈机器..不是基于lambda list机...

作者 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com
来源: http://blog.csdn.net/attilax

##actual code 实际代码如下
----------------

###filter 实现...
public static <atiType> atiType filterO4(atiType arr, Func func) {
        // List li = new ArrayList();
        // for (int i = 0; i < objLi.size(); i++) {
        // String string = objLi.get(i);
        // boolean o = (Boolean) func.invoke(string);
        // if (!o)
        // li.add(string);
        // }

List li = new ArrayList();
        if (arr instanceof String[]) {
            String[] sa = (String[]) arr;
            for (int i = 0; i < sa.length; i++) {
                String charx = sa[i];
                if (!(Boolean) func.invoke(charx))
                    li.add(charx);

}
            return (atiType) toStrArr(li);
        }
        if (arr instanceof List) {
             List li3=(List) arr;
            for (int i = 0; i <li3.size(); i++) {
                String charx = (String) li3.get(i);
                if (!(Boolean) func.invoke(charx))
                    li.add(charx);

}
            return (atiType)  (li);
        }

return null;
    }

### map 实现..
    
    public static List<String> mapx(Object li, Func function) {
        List lir = new ArrayList();
        if (li instanceof List) {
            List objLi = (List) li;
            for (int i = 0; i < objLi.size(); i++) {
                Object o = function.invoke(objLi.get(i));

lir.add(i, o);
            }
        } else {
            Object[] objLi = (Object[]) li;
            for (int i = 0; i < objLi.length; i++) {
                lir.add(function.invoke(objLi[i]));
            }
        }
        return lir;
    }
    
###reduce
public static <atiType,retType> retType reduceO4d(atiType obj,   Func function) {
    
        retType lastVal = null;
        
        if (obj instanceof List) {
            if(lastVal==null)
                lastVal=(retType) new ArrayList();
            
            List objLi = (List) obj;
            for (int i = 0; i < objLi.size(); i++) {
                lastVal =   (retType) function.invoke(lastVal, objLi.get(i));

}
            return (retType) lastVal;
        }
        return null;
    }
###调用
public static void main(String[] args) {
        String f = "c:\\li.txt";
        List<String> li = filex.read2list(f);
        List<String> li2 = listUtil.reduceO4d(li, new Func() {

@Override
            public Object invoke(Object... o) {
                List Last = (List) o[0];
                String s = (String) o[1];
                if (s.contains("@")) {
                    String[] a = s.split("\\t");
                    String nowSlect = a[0].trim().replaceAll("@", "");
                    List li_now=listUtil.toList(nowSlect);
                    li_now=listUtil.deDulicate(li_now);
                    return  Last.addAll(li_now);
                }
                return Last;

}
        });
        filex.saveList2file(li2, "c:\\catch.txt");
    }

paip.提升效率---filter map reduce 的java 函数式编程实现相关推荐

  1. php 多核cpu,paip.提升性能--多核cpu中的java/.net/php/c++编程

    paip.提升性能--多核cpu中的java/.net/php/c++编程 作者Attilax  艾龙,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http ...

  2. paip.提升效率--调试--日志系统日志参数含义---python

    paip.提升效率--调试--日志系统日志参数含义---python #同时向控制台和文件输出日志 #日志参数含义 import logging log_format = '%(filename)s ...

  3. python3函数中lambda/filter/map/reduce的用法

    lambda/filter/map/reduce这几个函数面试中很肯定会用到,本篇主要介绍这几个函数的用法. 1.lambda 匿名函数,用法如下: # lambada 参数,参数,参数 : 返回的表 ...

  4. paip.提升效率---提升绑定层次--form绑定取代field绑定

    paip.提升效率---提升绑定层次--form绑定取代field绑定 =================== 编辑form中,常常需要,绑定一个对象到个form..   传统上要绑定field开始. ...

  5. Python基础(六)—函数式编程(内部函数、闭包、lambda、filter/map/reduce/sorce、偏函数)

    内部函数 Python中函数的作用域由def关键字界定,函数内的代码访问变量的方式是从其所在层级由内向外,若往外直至全局作用域都查找不到的话代码会抛异常. 主要看以下代码的差别~~ "&qu ...

  6. java函数式编程归约reduce概念原理 stream reduce方法详解 reduce三个参数的reduce方法如何使用

    java函数式编程归约reduce概念原理 stream reduce方法详解 reduce三个参数的reduce方法如何使用

  7. Java函数式编程 - 再谈Stream

    Java函数式编程 - 再谈Stream 1.reduce() 前一章节说了Stream一些使用方式,Stream.reduce()也是Stream中的一个终结操作.使用起来较为复杂一些 1.1 概念 ...

  8. java 函数式编程_Java函数式编程:Javaslang入门

    java 函数式编程 Java是一门古老的语言,并且该领域中有很多新手在他们自己的领域(JVM)上挑战Java. 但是Java 8到来并带来了一些有趣的功能. 这些有趣的功能使编写新的惊人框架(例如S ...

  9. java 函数式编程 示例_功能Java示例 第8部分–更多纯函数

    java 函数式编程 示例 这是第8部分,该系列的最后一部分称为"示例功能Java". 我在本系列的每个部分中开发的示例是某种"提要处理程序",用于处理文档. ...

  10. Java函数式编程整理

    2019独角兽企业重金招聘Python工程师标准>>> Java函数式编程的第一个作用是可以将匿名类改写成函数式表达式,由系统自动判断类型 我们先定义一个接口 public inte ...

最新文章

  1. 百度分布式配置中心BRCC正式开源
  2. 17-mysql-数据定义语言-ddl
  3. 漫步最优化四十四——基本拟牛顿法
  4. 2017.9.18 HH的项链 思考记录
  5. web前端网站推荐(后续继续补充)
  6. SharePoint 2010整体进行验证
  7. 8.1 复用(组合/继承)
  8. FillForm网页表单填写插件(用于火狐浏览器,自动填表,自动表单,填写表单)
  9. 学习笔记 Tianmao 篇 SliderLayout 的使用
  10. Angular学习笔记第三章——创建组件
  11. python查询12306余票_python命令行查询12306火车票
  12. 《国际贸易术语解释通则》概述中关于2000年通则的主要内容
  13. 历时七天,史上最强MySQL优化总结,从此优化So Easy!
  14. stm32f103c8t6 FLASH模拟EEPROM
  15. (4)pokeman_用图片对模型进行测试
  16. Mysql性能衡量指标
  17. WLW blog 小技巧
  18. Python不换行输出
  19. 2-Arduino小车测速模板安装与测试
  20. 跨区域机房集中监控数据云平台运维管理方案

热门文章

  1. Linux - ATT汇编基础
  2. 机器人到底会不会有情感?
  3. 工厂模式的思想主要为
  4. Python-2 eval函数
  5. 2017年前端该学些什么(译)
  6. OC语言——————表视图
  7. linux 之 sed
  8. 解决jsp页面数据传递乱码问题
  9. Druid手动创建连接的坑
  10. Selenium 三种等待