Java 快速、轻量级 Collection 类的集合GNU Trove

今天有幸接触到了 Trove,搜索资料后,进一步了解了Trove ,使用之后效率提升明显、内存占用量显著减少。

Trove 是一个快速、轻量级 Collection 类的集合。Trove 提供所有标准 java.util Collections 类的更快的版本以及能够直接在原语(primitive)(例如包含 int 键或值的 Map 等)上操作的 Collections 类的版本。 
customlogo.gif.png 

官方网站:http://www.open-open.com/lib/view/home/1326885882890


传统的集合类,比方说 Map 吧,它包括键和值,每个键或者值都可以是 Object 或者 8 种基本数据类型之一: byte 、 short 、 char 、 int、 long 、 float 、 double 和 boolean 。这样就有 9 种键和 9 种值,组成 81 种不同类型的 Map !更糟的是,只要其中一个存在缺陷,就意味着其他 80 种很可能也存在缺陷,而能够共用的代码很有限,因为为了有效地处理每种数据类型,需要分别实现算法,从而,维护的工作量太大了

从 Trove 中得到什么呢?许许多多的高效集合。除了那 81 种不同的 HashMap 版本之外(比如 TIntIntHashMap 、 TIntObjectHashMap 等),还有 List 和 Set 类可以存储基本类型(如 TIntHashSet 、 TFloatArrayList等)。这种体系结构甚至允许您插入自己的散列策略,以便选择对您的数据集而言可能更有效(或者更灵活)的算法。当然,支持灵活的散列算法也要付出性能代价 —— 如果散列映射成为瓶颈,很可能是因为大量地使用它,这意味着散列函数被反复不断地调用。因此,散列函数中每一点多余的开销都可能成为瓶颈。(顺便说一下,如果散列函数足够简单,JIT 编译器就可能将其编译成内联函数,这样在支持灵活的散列策略的同时又不会带来额外的开销 —— 真是免费的午餐!)

  如下是一个写的集合工具类

复制代码
 1 import gnu.trove.THashMap;
2 import gnu.trove.TIntObjectHashMap;
3 import gnu.trove.THashSet;
4 import gnu.trove.TLinkedList;
5
6 import java.util.HashMap;
7 import java.util.HashSet;
8 import java.util.LinkedList;
9 import java.util.List;
10 import java.util.Map;
11 import java.util.Set;
12
13
14 public class CollectionFactory {
15
16 static boolean trove = true;
17
18 static {
19 if (System.getProperty("trove").equalsIgnoreCase("true"))
20 trove = true;
21 }
22
23 public static Map getHashMap() {
24 if (trove) {
25 return new THashMap();
26 } else {
27 return new HashMap();
28 }
29 }
30
31 public static TIntObjectHashMap getHashMap2() {
32 return new TIntObjectHashMap();
33 }
34
35
36
37 public static Map getHashMap(int capacity) {
38 if (trove) {
39 return new THashMap(capacity);
40 } else {
41 return new HashMap(capacity);
42 }
43 }
44
45 public static Set getHashSet() {
46 if (trove) {
47 return new THashSet();
48 } else {
49 return new HashSet();
50 }
51 }
52
53 public static Set getHashSet(int capacity) {
54 if (trove) {
55 return new THashSet(capacity);
56 } else {
57 return new HashSet(capacity);
58 }
59 }
60
61 public static List getLinkedList() {
62 if (trove) {
63 return new TLinkedList();
64 } else {
65 return new LinkedList();
66 }
67 }
68
69 }
复制代码









评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值