Linq to Objects for Java
好几年不写博客了,人也慢慢变懒了。然而想写了却不知道写点啥,正好最近手头有点小项目就分享一下经历。
现在 java 的大环境下,基本都是围着 spring 转,加上一堆其他的库。有了架子就开始搞业务了,大家都忙的焦头烂额。写业务的时候经常碰到操作集合的情况,基本上就是 apache、stream-api 都用上,实在不行就各种循环,各种容器 array,list,map 纷纷上阵。但是本人是从 C# 转到 java 的,总是觉得这么搞浪费开发效率,非常不爽。这里嘲讽一下自己,有的用就不错了,还挑肥拣瘦,就是被 .net 给惯得毛病。
本着搞事情的原则,就想会不会有 第三方的 linq 库可以拿来用用。一搜发现还真有个库,用法跟 .net 的一模一样(java 的假泛型导致的,有些 api 用起来还是比较难受)。但是打开源代码看了一下,还是有点失望。虽然实现了表达式树和大多数的 linq api。但是实现方式跟我的预期不一样,可能那个库写的比较早那时候 java 还不支持在接口中写默认方法,关键是代码写的比较乱,实现思路跟 .net 的 linq 也有好多不一致的。
思想斗争了一番,最终决定自己在 java 上实现一个 linq。具体的实现参考了 .net 的源码,质量可以保证。但是 java 不支持 yiled。中间又有一段时间研究 java 的 yield 库,最后果断放弃了,一是没有编译成功,二是非官方的字节码修改不太靠谱。最终决定将 .net 中的 yiled 关键字,结合编译器生成的状态机代码,翻译成 java 版本的 状态机。最终诞生了 Linq to Objects for Java 这个库。最近征得领导同意,将代码开源,以不断优化。
最后,附上项目地址:https://github.com/timandy/linq。欢迎拍砖,欢迎 fllow。
Linq to Objects for Java的更多相关文章
- Linq to Objects for Java 发布 1.0.1 版本
现在 java 支持 linq 啦.比原生 stream api 更好用,功能更强大.现已发布 version 1.0.1 地址: https://github.com/timandy/linq. A ...
- Linq To Objects
一.什么是Linq To Objects 从根本上说,Linq To Objects表示一种新的处理集合的方法.采用旧方法,必须编写指定如何从集合检索数据的复杂的foreach循环.而采用Linq方法 ...
- Linq之旅:Linq入门详解(Linq to Objects)
示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...
- [C#] Linq To Objects - 如何操作文件目录
Linq To Objects - 如何操作文件目录 开篇语: 上次发布的 <LINQ:进阶 - LINQ 标准查询操作概述> 社会反响不错,但自己却始终觉得缺点什么!“纸上得来终觉浅,绝 ...
- [C#] Linq To Objects - 如何操作字符串
Linq To Objects - 如何操作字符串 开篇语: 上次发布的 <LINQ:进阶 - LINQ 标准查询操作概述>(90+赞) 社会反响不错,但自己却始终觉得缺点什么!“纸上得来 ...
- LINQ to Entities 和LINQ to Objects 的区别
本文资料来源:http://www.codeproject.com/Articles/246861/LINQ-to-Entities-Basic-Concepts-and-Features) LINQ ...
- Linq之Linq to Objects
目录 写在前面 系列文章 linq to objects 总结 写在前面 上篇文章介绍了linq的延迟加载特性的相关内容,从这篇文章开始将陆续介绍linq to Objects,linq to xml ...
- 查询表达式和LINQ to Objects
查询表达式实际上是由编译器“预处理”为“普通”的C#代码,接着以完全普通的方式进行编译.这种巧妙的发式将查询集合到了语言中,而无须把语义改得乱七八糟 LINQ的介绍 LINQ中的基础概念 降低两种数据 ...
- LINQ之LINQ to Objects(上)
LINQ概述 LINQ,语言集成查询(Language Integrated Query),它允许使用C#或VB代码以查询数据库相同的方式来操作不同的数据源. 1.LINQ体系结构 从上图可以看出,L ...
随机推荐
- ORACLE增加用户
create user 账号 identified by "密码"; grant connect to 账号; grant resource to 账号; --把dba 权限给in ...
- Regexp:正则表达式应用——实例应用
ylbtech-Regexp:正则表达式应用——实例应用 1. 实例应用返回顶部 1. 1.验证用户名和密码:("^[a-zA-Z]\w{5,15}$")正确格式:"[A ...
- 四 Mixer
Mixer在应用程序和基础架构后端之间提供通过中介层.它的设计将策略决策移出应用层,用运维人员能够控制的配置取而代之. Mixer的设计目的是改变层次之间的边界,以此降低总体复杂性.从服务代码中剔除策 ...
- Spring学习八
1: Tomcat容器四个等级? Container, Engine, Servlet容器, Context 真正管理Servlet的容器是Context容器:一个context对应一个web工程. ...
- catkin 工作空间
catkin 工作空间:组织和管理功能包的文件夹,以 catkin 工具编译 建立工作空间 sch01ar@ubuntu:~$ mkdir -p ~/catkin_ws/src sch01ar@ubu ...
- 2015.1.3 DataGridView中嵌入其它控件
1.按正常方法绑定待嵌入列的值,先赋值为空也行. 2.添加combbox到datagrivdview中 dvaw.Controls.Add(cb_dir); 3.添加DataGridView Mous ...
- 语法错误: 标识符“acosf”
1>e:\vs2010\vc\include\cmath(19): error C2061: 语法错误: 标识符“acosf” 1>e:\vs2010\vc\include\cmath(1 ...
- Spring-@value用法详解
为了简化读取properties文件中的配置值,spring支持@value注解的方式来获取,这种方式大大简化了项目配置,提高业务中的灵活性. 一.两种使用方法 1.@Value("#{co ...
- Oracle——基础知识(一)
一.Oracle中的数据类型 1.字符串类型.如:char.nchar.varchar2.nvarchar2.2.数值类型.如:int.number(p,s).integer.smallint. ...
- 11-24网页基础--Js基础语法
1.运算符 比较运算符(7种):==/===/!=/>/</<=/>= ===(全等于) 2.字符串substring的用法 3.练习题:累加求和(运用Js的方法) 4.进制转 ...