Eclipse Collections的API設計演進
Eclipse Collections是一個開源Java集合框架,可以用Java編寫功能齊全,流暢的程式碼,這篇文章解釋了成熟Java集合庫的演化策略:
歷史
Eclipse Collections於2004年在Goldman Sachs開始作為一個名為Caramel的集合框架開始,在2012年,它作為一個名為GS Collections的專案開放給GitHub。多年來,大約40名來自同一公司的開發人員為集合框架做出了貢獻。為了最大限度地發揮開源專案的最佳性質,GS Collections被遷移到Eclipse Foundation,在2015年重新命名為Eclipse Collections。現在該框架對社群完全開放,接受貢獻!
設計目標
Eclipse Collections旨在提供豐富,功能,流暢和有趣的API以及記憶體高效的資料結構,同時提供與Java Collections的互操作性。它提供了缺失的型別,如Bag,Multimap,Stack,BiMap,Interval。
框架的演變
在過去14年多的時間裡,框架已經成熟,最高介面:RichIterable現在有超過100種方法。經過仔細考慮後,這些方法被包含在介面中。
比如讓我們在Eclipse Collections版本9.0.0中新增的簡單API,實現一個RichIterablecountBy() :
MutableList<String> strings = Lists.mutable.with( "1", "2", "2", "3", "3", "3", "4", "4", "4", "4"); Bag<Integer> integers = strings.collect( Integer::valueOf, Bags.mutable.empty()); Assert.assertEquals(1, integers.occurrencesOf(1)); Assert.assertEquals(2, integers.occurrencesOf(2)); Assert.assertEquals(3, integers.occurrencesOf(3)); Assert.assertEquals(4, integers.occurrencesOf(4)); |
上面計算整數的解決方案是有效的,但是,它並不直觀。沒有經驗的開發人員可能很難實現此解決方案。因此,我們決定新增countBy(),現在程式碼看起來更實用,更流暢,更直觀。
MutableList<String> strings = Lists.mutable.with( "1", "2", "2", "3", "3", "3", "4", "4", "4", "4"); Bag<Integer> integers = strings.countBy(Integer::valueOf); Assert.assertEquals(1, integers.occurrencesOf(1)); Assert.assertEquals(2, integers.occurrencesOf(2)); Assert.assertEquals(3, integers.occurrencesOf(3)); Assert.assertEquals(4, integers.occurrencesOf(4)); |
相關文章
- API 演進的正確方式API
- RocketMQ 5.0 API 與 SDK 的演進MQAPI
- 程式設計師必知的前端演進史程式設計師前端
- 愛奇藝平臺的架構設計與演進之路架構
- 人工智慧演進:道德可以被程式設計嗎?人工智慧程式設計
- 新硬體環境下日誌模組的設計與演進
- 硬核 - Java 隨機數相關 API 的演進與思考(上)Java隨機API
- WebRTC 1.0 之後,那些 WebRTC API 還將發生的演進WebAPI
- 小米自動化運維平臺演進設計思路運維
- Http的演進HTTP
- 設計流暢的API(Fluent API)API
- 計算機程式的思維邏輯 (54) - 剖析Collections - 設計模式計算機設計模式
- 一步一步演進RESTful API版本 - frankelRESTAPI
- 雲端計算演進與應用
- Button 的 "進化之旅" | 我們是如何設計 Compose API 的API
- 使用Collections對list的內容進行排序排序
- 架構的演進架構
- 非同步 API 的設計非同步API
- Collections工具類,可以使用collections工具類對程式碼中的list進行分組
- 讀《浮現式設計-專業軟體開發的演進本質》有感
- API介面設計API
- 利用Yii框架中的collections體驗PHP型別化程式設計框架PHP型別程式設計
- Airbnb的架構演進AI架構
- Serverless 架構的演進Server架構
- Java的API設計實踐JavaAPI
- Restful API 的設計規範RESTAPI
- Django 中 REST API 的設計DjangoRESTAPI
- 如何更好的設計 RESTful APIRESTAPI
- 如何更好的設計RESTful APIRESTAPI
- API的設計與實現API
- JavaScript 的 API 設計原則JavaScriptAPI
- Heroku的HTTP API設計指南HTTPAPI
- 架構設計之架構的演變架構
- 【本人禿頂程式設計師】最簡單的設計模式——單例模式的演進和推薦寫法(Java 版)程式設計師設計模式單例Java
- 軟體成分安全分析(SCA)能力的建設與演進
- 今日頭條架構演進之路 — 高壓下的架構演進架構
- 數字生態系統安全演進:軟體供應鏈中的API安全API
- 前端演進思考前端