java的linq.linq4j简明介绍

java的linq.linq4j简明介绍

ID:34723844

大小:59.48 KB

页数:6页

时间:2019-03-10

java的linq.linq4j简明介绍_第1页
java的linq.linq4j简明介绍_第2页
java的linq.linq4j简明介绍_第3页
java的linq.linq4j简明介绍_第4页
java的linq.linq4j简明介绍_第5页
资源描述:

《java的linq.linq4j简明介绍》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Java的LINQ:Linq4j简明介绍开发JAVA一段时间,面临的一大问题就是集合操作,习惯了LINQ的简洁语法,对JAVA的集合操作实在是无甚好感,只能通过C系的循环实现筛选等操作,由于没有延迟执行特性,内存占用实在不敢恭维。因此便在网上找到了linq4j,一个针对JAVA的linq移植版本。下面的文章,就会对这一工具进行简要的介绍。开发JAVA一段时间,面临的一大问题就是集合操作,习惯了LINQ的简洁语法,对JAVA的集合操作实在是无甚好感,只能通过C系的循环实现筛选等操作,由于没有延迟执行特性

2、,内存占用实在不敢恭维。因此便在网上找到了linq4j,一个针对JAVA的linq移植版本。下面的文章,就会对这一工具进行简要的介绍。一.安装该项目的Github地址是:https://www.zretc.com.显然是一个个人项目,向作者致敬。它并没有部署在标准的maven库里,因此需要手动编译生成。使用标准命令行:1.git clone git://github.com/julianhyde/linq4j.git linq4j    #git克隆到linq4j目录下 2. 3.     mvn c

3、ompile  #编译 4. 5.     mvn test #测试 6. 7.     mvn jar:jar  #生成jar包 使用了maven以后,工作效率大大提升,.当然NET下也有类似的工具nuget.二.Linq4j的扩展功能由于JAVA目前还没有匿名函数和扩展函数,而且内置的标准迭代器接口Iterator功能偏弱。因此Linq4j增加了一个一系列泛型接口和函数:1. 新迭代器接口:Enumerable,它扩展了Iterator的功能2. 一组类似“委托”性质的函数: (1)返回R的

4、泛型委托:publicinterfaceFunction{}(2)接收T,返回R的泛型委托:publicinterfaceFunction1{}(3)接收T1,T2,返回R的泛型委托,定义如下:1./**  2. * Function with two parameters.  3. *  4. * @param  result type  5. * @param  type of parameter 1  6. * @param  type of paramet

5、er 2  7. */  8.public interface Function2 extends Function {  9.  R apply(T1 v1, T2 v2);  10.} 当然,内置的函数不止这些,还有一系列非泛型的委托,包括返回bool型的Predicate函数。由于篇幅限制,此处不一一介绍。3.一系列Expressions,具体使用下面有介绍。三.使用方法该库实现了大部分LINQ的功能,其中包括了筛选器,排序器,分组器,类型转换等功能。下面我们以一个实

6、例来介绍它。先定义一个实体:1.public class Person 2.    { 3.    public int Age; 4.    public String     Name; 5.    public boolean Sex; 6.    } 我们的基本任务,是将一个Person集合中,所有性别为男(true)的名字取出来,并按照string的默认降序排列。最后得到的应该是List类型。1.//Linq4j: 2.public void Test(ArrayList

7、erson> persList) 3.     { 4.    java.util.List nameStrings=  Linq4j.asEnumerable(persList).where(new Predicate1() 5.    { 6.         1.        public boolean apply(Person arg0) 2.        { 3.         4.         return arg0.Sex

8、; 5.        } 6.    }).select(new Function1() 7.    { 8. 9.        public String apply(Person arg0) 10.        { 11.         return arg0.Name; 12.        } 13.    }).orderByDescending(new Function1

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。