#paip.提升效率---filter map
reduce 的java 函数式编程实现
========================================================
#----------------------index索引------------------
++函数式编程的优点儿以及缺点
++actual
code 实际代码例如以下
---filter 实现...
--- map 实现..
---reduce
---调用
##函数式编程的优点儿以及缺点
----------------------------
从声明式编程 取代 命令式编程
的观点来看,函数式编程是个好东东..why >>>how
大多时间哈,,能够easy的理解..
大多时间哈,更是代码短....
可是,有时候,代码很多其它,更长的...预计是java7 没实现lambda 表达式造成的吧..
reduce 使用的递归,可能很多其它的对象生成,,以及堆栈溢出...毕竟,如今的电脑都是基于寄存器的...不是基于堆栈机器..不是基于lambda
list机...
作者 老哇的爪子 Attilax 艾龙, EMAIL:[email protected]
来源:
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 函数式编程实现