好几年不写博客了,人也慢慢变懒了。然而想写了却不知道写点啥,正好最近手头有点小项目就分享一下经历。

  现在 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的更多相关文章

  1. Linq to Objects for Java 发布 1.0.1 版本

    现在 java 支持 linq 啦.比原生 stream api 更好用,功能更强大.现已发布 version 1.0.1 地址: https://github.com/timandy/linq. A ...

  2. Linq To Objects

    一.什么是Linq To Objects 从根本上说,Linq To Objects表示一种新的处理集合的方法.采用旧方法,必须编写指定如何从集合检索数据的复杂的foreach循环.而采用Linq方法 ...

  3. Linq之旅:Linq入门详解(Linq to Objects)

    示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...

  4. [C#] Linq To Objects - 如何操作文件目录

    Linq To Objects - 如何操作文件目录 开篇语: 上次发布的 <LINQ:进阶 - LINQ 标准查询操作概述> 社会反响不错,但自己却始终觉得缺点什么!“纸上得来终觉浅,绝 ...

  5. [C#] Linq To Objects - 如何操作字符串

    Linq To Objects - 如何操作字符串 开篇语: 上次发布的 <LINQ:进阶 - LINQ 标准查询操作概述>(90+赞) 社会反响不错,但自己却始终觉得缺点什么!“纸上得来 ...

  6. LINQ to Entities 和LINQ to Objects 的区别

    本文资料来源:http://www.codeproject.com/Articles/246861/LINQ-to-Entities-Basic-Concepts-and-Features) LINQ ...

  7. Linq之Linq to Objects

    目录 写在前面 系列文章 linq to objects 总结 写在前面 上篇文章介绍了linq的延迟加载特性的相关内容,从这篇文章开始将陆续介绍linq to Objects,linq to xml ...

  8. 查询表达式和LINQ to Objects

    查询表达式实际上是由编译器“预处理”为“普通”的C#代码,接着以完全普通的方式进行编译.这种巧妙的发式将查询集合到了语言中,而无须把语义改得乱七八糟 LINQ的介绍 LINQ中的基础概念 降低两种数据 ...

  9. LINQ之LINQ to Objects(上)

    LINQ概述 LINQ,语言集成查询(Language Integrated Query),它允许使用C#或VB代码以查询数据库相同的方式来操作不同的数据源. 1.LINQ体系结构 从上图可以看出,L ...

随机推荐

  1. think python chapter3

    3.1 built-in function type(42)=> <class 'int'> int('32')=>32 int(3.9) => 3 int(-2.3)= ...

  2. MySQL 用户权限详细汇总(转)

    1,MySQL权限体系 MySQL 的权限体系大致分为5个层级: 全局层级: 全局权限适用于一个给定服务器中的所有数据库.这些权限存储在mysql.user表中.GRANT ALL ON .和REVO ...

  3. 使用Azure Site Recovery把VM批量搬迁到Azure

    Azure Site Recovery可以提供如下服务: Site Recovery 服务:Site Recovery 可以在站点出现故障时,让应用在其他站点继续可用,从而确保业务连续性. Site ...

  4. Angular5学习笔记 - 创建组件(四)

    一.创建组件 ng generate component component-name #简写 ng g c component-name ng generate directive|pipe|ser ...

  5. 【转】 Pro Android学习笔记(八三):了解Package(2):包签名过程

    目录(?)[-] 类比例子 数字签名 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ 在W ...

  6. Cassandra 学习二

    Cassandra的架构 Cassandra的设计目的是处理跨多个节点的大数据工作负载,而没有任何单点故障.Cassandra在其节点之间具有对等分布式系统,并且数据分布在集群中的所有节点之间. 1 ...

  7. C# DataTable的常用用法讲解

    在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结. 一.DataTable简 ...

  8. rails登录后跳转到登录前的路径

    # 重定向到存储的地址或默认地址 def redirect_back_or(default) redirect_to(session[:forwarding_url] || default) sess ...

  9. Weblogic wls RCE 漏洞验证POC

    #!/usr/bin/env python # coding:utf-8 # @Date : 2017/12/22 17:11 # @File : weblogic_poc.py # @Author ...

  10. 10-28SQLserver基础--数据库管理器(基础操作)

    C#基础--数据库(用来存储大量的数据) 操作数据库文件唯一途径 SQL server,结构化查询语言简称SQL. Analysis services:分析挖掘数据 Reporting service ...