高性能集合框架——fastUtils

高性能集合框架——fastUtilsFastUtils 是一个扩展 Java 集合框架并提供高性能特定类型集合的库 包含快速 I O 类

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}); 
 
 
  
编程小号
上一篇 2025-02-26 10:30
下一篇 2025-03-03 23:40

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/84783.html