Linq in Java
阿新 • • 發佈:2017-06-10
表達式 聯系 獲得 可能 不同 能力 question scala 函數
鏈接:https://www.zhihu.com/question/25351707/answer/30507628
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。
完整的LINQ分以下幾部分,缺一不可:
這是關於Java和Linq的描述, 經典的話一定要記下來:
作者:趙劼鏈接:https://www.zhihu.com/question/25351707/answer/30507628
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。
完整的LINQ分以下幾部分,缺一不可:
- Lambda Expression
- Query Expression
- Extension Methods
- Expression Tree
- Anonymous Types
- 無法用Monad形式(沒有Query Expression)
- 難以擴展的(沒有Extension Methods)
- 無法表達語句結構及動態編譯函數(沒有Expression Tree)
- 無法借助臨時結構減少計算或增強表達能力(沒有Anonymous Types)
的LINQ。
此外,這套API不是加在標準的Iterator和Iterable模型上的(在C#叫IEnumerator和IEnumerable),導致又多了一套Streams模型出來,而又和IO的Stream容易產生混淆,真不知道設計者是怎麽想的,搞個Extension Methods出來多好,不光對LINQ有用,簡直方便之至。
總而言之,Java 8這套給我的感覺就是因為不願意搞出和C#一樣的設計而引入的半吊子東西。當年Lambda表達式的草案是和C#以及Scala一樣使用“=>”符號的,結果最後硬要改為“->”真是生怕別人不知道要故意跟C#不同。 Java也真不爭氣,Linq都出來多久了,這Java上還弄的是這個樣子。目前Java能引以自豪的可能就只有三樣:跨平臺,強啊而靈活的JVM和眾多的開源項目。現在.Net也開源了,也跨平臺了,如果Java還這樣停滯不前的話,再過幾年可能是.Net的天下了。決策上過分的民主只會是內耗。明智的取舍和大膽的前進才有光輝的明天。Java的技術委員會真他媽是一個暮氣沈沈的機構,早該倒閉了。Linq in Java