几种Java集合框架详解
Java集合框架Koloboke详解作者:chszs,未经博主允许不得转载。经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszsKoloboke的目标是替换标准的Java集合和流的API,提供更高效的实现。Koloboke目前的版本主要是替换java.util.HashSet和java.util.HashMap。Koloboke提供了一套完整的集合原始类型的实现,可以避免开销很大的装箱/拆箱操作,节省了原始类型装箱消耗的内存。在Koloboke中,HashSet和HashMap比其它专门的实现(比如GS collections、fastutil、HTTP & Trove)要更快,这是因为:1)相比于其它库,Koloboke对每个entry使用了更少的内存
2)Koloboke目标是把键和值存储在同一行高速缓存中 3)所有的方法都经过了实现优化,而不是像AbstractSet类或AbstractMap类那样委托给框架类(Skeleton Class)Koloboke的官网:
http://chronicle.software/products/koloboke-collections/Koloboke的特征:1)极好的兼容Java集合框架(JCF,Java Collections Framework)
2)所有原始专门的集合类都继承了基本的接口(比如Collection、Set、Map)
3)可用于替换标准的JCF
4)Koloboke API for Java 6 and Java 7向前兼容Java 8的新方法
5)快速失败的语义
6)支持null键(可选的),就像java.util.HashMap中的Float.NaN和Double.NaN键的处理那样。什么时候使用Chronicle Map或Koloboke Map?使用Chronicle Map的场景:
1)存储的entry超过5亿条 2)在进程之间分布Map
3)使用堆外内存(Off-Heap Memory),因为键和值占用了太多的内存,JVM遭遇GC的痛苦当不想在进程间共享数据,且存储的entry在5亿条以内,那么Koloboke是更理想的选择。Koloboke目前的最新版本为0.6.8版。可以从Maven仓库使用它:<dependency>
<groupId>net.openhft</groupId> <artifactId>koloboke-api-jdk8</artifactId> <version>0.6.8</version> </dependency> <dependency>
<groupId>net.openhft</groupId>
<artifactId>koloboke-impl-jdk8</artifactId>
<version>0.6.8</version> </dependency>
Gradle依赖为dependencies {
// `jdk8` instead of `jdk6-7` if you use Java 8 compile 'net.openhft:koloboke-api-jdk6-7:0.6.8' runtime 'net.openhft:koloboke-impl-jdk6-7:0.6.8' }
也可以到这里下载:
https://github.com/OpenHFT/Koloboke/releases Java集合框架GS Collections详解作者:chszs,未经博主允许不得转载。经许可的转载需注明作者和博客主页:
http://blog.csdn.net/chszsGS Collections是一个开源的基于Java的集合框架,它兼容JDK的List、Set、Map实现,并提供了一套功能丰富的API和工具类集合,其迭代循环的实现是受Smalltalk集合框架的启发。GS Collections库的模块兼容Java 5,包括gs-collections-api,gs-collections,gs-collections-testutils。GS Collections目前的最新版本为7.0.0版。主页见:
https://github.com/goldmansachs/gs-collectionsGS Collections特性:1)改进了易读性,减少了迭代循环代码的重复
2)实现了数个高级迭代模式(选择select、拒绝reject、收
集collect、注入inject),人性化的容器接口,继承了标准JDK的接口。
3)对于Collections、Arrays、Maps、Strings等提供了一致的迭代机制
4)对标准的ArrayList、HashSet和HashMap提供了经过优化的高性能、低内存利用率的替代 5)在工具类中执行了更多幕后的优化
6)封装了很多结构复杂的并行迭代和懒惰估算
7)添加了新的容器,包括Bag、Interval、Multimap、BiMap,以及提供了很多容器类型的不可变(Immutable)版本 8)从2005年开始发布,是一个成熟的库GS Collections的使用:GS Collections把迭代丰富仿照容器类型中,并使用匿名的内部类来模拟Lambdas表达式。GS Collections的编程风格如下面代码所示:MutableList<Person> people = FastList.newListWith(person1, person2, person3);
MutableList<String> sortedLastNames = people.collect(Person.TO_LAST_NAME).sortThis(); System.out.println(\\
Person.TO_LAST_NAME被定义为Person类的一个常量函数public static final Function<Person, String>
TO_LAST_NAME = new Function<Person, String>() { public String valueOf(Person person) { return person.lastName; } };
对于Java 8,此函数可以使用Lambda表达式替代:MutableList<String> sortedLastNames = people.collect(person -> person.getLastName()).sortThis();
或者是用方法引用替代:MutableList<String> sortedLastNames =
people.collect(Person::getLastName).sortThis(); GS Collections的Maven依赖<dependency> <groupId>com.goldmansachs</groupId> <artifactId>gs-collections-api</artifactId> <version>7.0.0</version> </dependency> <dependency>
<groupId>com.goldmansachs</groupId> <artifactId>gs-collections</artifactId> <version>7.0.0</version> </dependency>