高性能集合框架——fastUtils

FastUtils简介

fastutil通过提供特定类型的映射,集合,列表和优先级队列来扩展Java™集合框架,并且占用内存很少,并且可以快速访问和插入; 还提供大(64位)数组,集和列表,以及用于二进制和文本文件的快速,实用的I / O类。

性能

特定类型的Map和Set比标准的集合类快上2-10倍。但是以对象作为key的HashMap往往比jdk的HashMap慢,因为fastutil不会缓存hashCode。

fastutil的树状数据结构有红黑树和AVL。树小时,红黑树速度更快,avl在大的数据时效率更高。

fastutil极大的减少了对象的创建和收集。使用多态的方法和迭代器,减少包装类的创建。fastutils的Hash结构的map采用开放地址法,避免hash条目的创建和垃圾回收。

三个核心组成

1、扩展自JAVA集合框架的特定类型的类,如IntList,IntSet.
2、支持大集合的类
3、快速访问二进制文件和文本文件的类

特定类型集合类

通过大量特定类型的集合类,避免自动开箱/拆箱,提高性能和节省内存。

Fastutils集合类的命名规范

1、集合:数据类型+集合类型 如:IntArrayList,IntArraySet等; 

2、映射:Key类型+2+value类型+Map类型  如Int2IntArrayMap;

1)、所有fastutil数据结构都根据固定的类型扩展,尝试使用错误类型的键或值都会产生一个ClassCastException。如Int类型的IntArrayList集合只能加入int类型的元素。fastutils中的集合数据类型有10种:8种基本数据类型+Object+Reference。

2)、要使用引用类型的集合,需要使用Object类型或者Reference类型的集合类,例如ObjectArrayList,ReferenceArrayList。

3)、fastutils的数据结构类都实现了对应jdk的标准接口(List,Set,Map等)。

使用例子

//===========IntList
//1、初始化
IntList list = new IntArrayList();  
//2、利用数组快速初始化集合
IntList list = new IntArrayList(new int[]{1,2,3});

  
for(int i = 0; i < 1000; i++){  
    list.add(i);  
}  
  
//取值  
int value = list.getInt(0);  
System.out.println(value);// 0  
  
//转成数组  
int[] values = list.toIntArray();  
System.out.println(values.length);// 1000  
  
//遍历  
IntListIterator i = list.iterator();  
while(i.hasNext()){  
    System.out.println(i.nextInt());  
}  
  
//===========Int2BooleanMap  
//1、初始化Map
Int2BooleanMap map = new Int2BooleanArrayMap();

map.put(1, true);  
map.put(2, false); 

//2、利用数组快速初始化Map 1-->true 2-->false
Int2BooleanMap map = new Int2BooleanArrayMap(new int[]{1,2},new boolean[]{true,false}); 
 
 
  
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值