开发JAVA一段时间,面临的一大问题就是集合操作,习惯了LINQ的简洁语法,对JAVA的集合操作实在是无甚好感,只能通过C系的循环实现筛选等操作,由于没有延迟执行特性,内存占用实在不敢恭维。因此便在网上找到了linq4j, 一个针对JAVA的linq移植版本。下面的文章,就会对这一工具进行简要的介绍。
一. 安装
它并没有部署在标准的maven库里,因此需要手动编译生成。使用标准命令行:
git clone git://github.com/julianhyde/linq4j.git linq4j #git克隆到linq4j目录下
mvn compile #编译
mvn test #测试
mvn jar:jar #生成jar包
使用了maven以后,工作效率大大提升,.当然NET下也有类似的工具nuget.
二. Linq4j的扩展功能
由于JAVA目前还没有匿名函数和扩展函数,而且内置的标准迭代器接口Iterator功能偏弱。 因此Linq4j增加了一个一系列泛型接口和函数:
1. 新迭代器接口: Enumerable,它扩展了Iterator的功能
2. 一组类似“委托”性质的函数:
(1)返回R的泛型委托:public interface Function {}
(2)接收T, 返回R的泛型委托:public interface Function1 {}
(3) 接收T1,T2, 返回R的泛型委托,定义如下:
/*** Function with two parameters.
*
*@param result type
*@param type of parameter 1
*@param type of parameter 2*/
public interface Function2 extends Function{
R apply(T1 v1, T2 v2);