天天看點

另外幾種Java集合架構詳解另外幾種Java集合架構詳解

版權聲明:本文為部落客chszs的原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/chszs/article/details/50518724

另外幾種Java集合架構詳解

作者:chszs,未經部落客允許不得轉載。經許可的轉載需注明作者和部落格首頁: http://blog.csdn.net/chszs

1、fastutil

fastutil是一個開源的Java集合架構的擴充,它繼承了Java Collection Framework,提供了數種特定類型的容器,包括映射map、集合set、清單list、優先級隊列(prority queue),實作了java.util包的标準接口(還提供了标準類所沒有的雙向疊代器),還提供了很大的(64位)的array、set、list,以及快速、實用的二進制或文本檔案的I/O操作類。

fastutil為專用的集合類提供了大容量的功能,而且類比普通Java集合類顯得更緊湊、速度更快。

除了對象和原始類型,fastutil類還提供了對引用的支援,也即對象是可以使用等号操作符進行比較的,無需使用equals()方法。

fastutil以Apache 2.0許可證釋出。使用它需要JDK 7以上版本。

fastutil以JAR包的方式提供,要注意這個JAR封包件比較大,因為它包含了大量的類檔案。如果你隻想要fastutil的一部分,那麼應該考慮實用AutoJar之類的根據來自動提取所需的類。

官網位址:

http://fastutil.di.unimi.it/

相似的技術:HPPC、Koloboke、GS Collections、Trove Collections、Mahout Collections

fastutil目前的最新版本為7.0.10版,這個最新的JAR包fastutil-7.0.10.jar大小為17MB。其Maven依賴為:

<dependency>
    <groupId>it.unimi.dsi</groupId>
    <artifactId>fastutil</artifactId>
    <version>7.0.10</version>
</dependency>
           

fastutil的線上API文檔見:

http://fastutil.di.unimi.it/docs/

fastutil 6在大資料方面進行了增強,提供了一套新的類集合使得可以處理很大的集合,尤其是當集合資料超過2GB(2^31)時。比如Hash Big Set僅僅受記憶體大小的限制。

2、HPPC

http://labs.carrotsearch.com/hppc.html https://github.com/carrotsearch/hppc

HPPC即High Performance Primitive Collections for Java,對Java的原始集合類型如映射map、集合set、堆棧stack、清單list、隊列deque等進行了擴充,提供了更佳的記憶體使用率,帶來了更好的性能。

HPPC目前的最新版本為0.7.1

3、Trove

http://trove.starlight-systems.com/

Trove庫提供了高速的Java集合類。

GNU Trove庫有兩個目标:

1)提供一個免費、高速、輕量級的java.util集合API的實作。

這些實作被設計成可插撥的方式,以便替代标準JDK的集合類。

2)提供原始的集合,API風格保持一緻。

标準JDK使用包裝器類來封裝原始類型,比如java.lang.Integer,java.lang.Float等,那麼标準集合類也使用了包裝後的類型。而對于Trove庫來說,集合直接存儲原始類型可以減少空間的使用量,并能帶來顯著的性能提升。

GNU Trove庫既可以用于伺服器端應用,也可以用于用戶端應用,它消耗的記憶體比标準集合架構更少。

GNU Trove庫目前的最新版本為3.0.3版,很成熟的一個庫。

應注意,Trove已經很久沒更新了,此項目可以不予考慮。

4、Mahout Collections

https://mahout.apache.org/users/basics/mahout-collections.html

Mahout Collections庫是一套容器類集合,它緻力于解決标準Java集合架構的一些限制。Mahout Collections主要解決兩方面的問題:

1)Java标準集合架構缺乏對原始類型的支援

2)Java标準集合架構缺乏對open hashing的支援