paip.提升效率---filter map reduce 的java 函数式编程实现
#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 函数式编程实现的更多相关文章
- paip.提升性能--多核cpu中的java/.net/php/c++编程
paip.提升性能--多核cpu中的java/.net/php/c++编程 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http ...
- paip.提升效率--批量变量赋值 “多元”赋值
paip.提升效率--批量变量赋值 "多元"赋值 ##石麻是批量变量赋值. 为一组变量赋值. 例子 1 <?php $my_array = array("Dog&q ...
- paip.提升效率---request自动绑定domain object
paip.提升效率---request自动绑定domain object #.keyword,subtitle关键字,子标题 ------------------------- 复制request属性 ...
- paip.提升效率--gui 的选择--swing最佳实践swt awt
paip.提升效率--gui 的选择--swing最佳实践swt awt ////////////////弹出消息框. ////////////////myeclipse swing 开发最佳实践.. ...
- Python经常使用内置函数介绍【filter,map,reduce,apply,zip】
Python是一门非常简洁,非常优雅的语言,其非常多内置函数结合起来使用,能够使用非常少的代码来实现非常多复杂的功能,假设相同的功能要让C/C++/Java来实现的话,可能会头大,事实上Python是 ...
- filter,map,reduce,lambda(python3)
1.filter filter(function,sequence) 对sequence中的item依次执行function(item),将执行的结果为True(符合函数判断)的item组成一个lis ...
- paip.提升效率--数据绑定到table原理和流程Angular js jquery实现
paip.提升效率--数据绑定到table原理和流程Angular js jquery实现 html #--keyword 1 #---原理和流程 1 #----jq实现的代码 1 #-----An ...
- paip.提升效率--调试--日志系统日志参数含义---python
paip.提升效率--调试--日志系统日志参数含义---python #同时向控制台和文件输出日志 #日志参数含义 import logging log_format = '%(filename)s ...
- paip.提升效率--僵尸代码的迷思
paip.提升效率--僵尸代码的迷思 僵尸代码是指你的代码库里被注释掉的那部分代码, 很少去使用它,就像僵尸一样, 看雷kill-the-zombies-in-your-code ========== ...
随机推荐
- gcc编译时指定链接库的查找目录
gcc编译时,如果需要链接的库的目录不在标准目录,则需要通过将保护库的目录/aa/bb/cc通过-L/aa/bb/cc 添加到搜索路径中,如: gcc -o xmltest xml_test.cpp ...
- 什么是侧翼区(flanking region)和侧翼区单核苷酸多态性(Flanking SNPs)
侧翼区(flanking region) 根据维基定义:The 5' flanking region is a region of DNA that is adjacent to the 5' end ...
- Codeforces Round #383 _python作死系列
A. Arpa's hard exam and Mehrdad's naive cheat 题意求1378的n次方的最后一位,懒的写循环节 瞎快速幂 py3 int和LL 合并为int了 def q_ ...
- #import、#include以及@class的区别
一.#import和#include的区别 当我们在代码中使用两次#include的时候会报错:因为#include相当于拷贝头文件中的声明内容,所以会报重复定义的错误 但是使用两次#import的话 ...
- Servlet的5种方式实现表单提交(注册小功能),后台获取表单数据
用servlet实现一个注册的小功能 ,后台获取数据. 注册页面: 注册页面代码 : <!DOCTYPE html> <html> <head> <meta ...
- Linux下安装软件的一般步骤
目录 一.解析Linux应用软件安装包 二.了解包里的内容 三.搞定使用tar打包的应用软件 四.搞定使用rpm打包的应用软件 五.搞定使用deb打包的应用程序 一.解析Linux应用软件安装包(回目 ...
- js之函数
1.倒计时定时器 timename=setTimeout("function()",delaytime); clearTimeout(timename); 2.循环定时器 time ...
- Xcode升级更新后,恢复cocoapods以及插件的方法
今天将手机系统更新到iOS9.3了,在Xcode7.1上做真机调试,提示找不到适合的SDK,才知道必须要升级Xcode才行,于是升级Xcode到7.3. 升级之后遇到很多麻烦,cocoapods没有了 ...
- 鼠标模拟点击a标签
今天写程序遇到的,想要用鼠标模拟点击a标签 html代码如下: <a id="jump"></a> js代码如下: var page = ....; $(' ...
- python基础整理笔记(二)
一. 列表 1. 创建实例: a = [1,2,3] b = list() 2. 主要支持的操作及其时间复杂度如下: 3. 其他 python中的列表,在内存中实际存储的形式其实是分散的存储,比较类似 ...