- 浏览: 3420477 次
- 性别:
- 来自: 珠海
文章分类
- 全部博客 (1633)
- Java (250)
- Android&HTML5 (111)
- Struts (10)
- Spring (236)
- Hibernate&MyBatis (115)
- SSH (49)
- jQuery插件收集 (55)
- Javascript (145)
- PHP (77)
- REST&WebService (18)
- BIRT (27)
- .NET (7)
- Database (105)
- 设计模式 (16)
- 自动化和测试 (19)
- Maven&Ant (43)
- 工作流 (36)
- 开源应用 (156)
- 其他 (16)
- 前台&美工 (119)
- 工作积累 (0)
- OS&Docker (83)
- Python&爬虫 (28)
- 工具软件 (157)
- 问题收集 (61)
- OFbiz (6)
- noSQL (12)
最新评论
-
HEZR曾嶸:
你好博主,这个不是很理解,能解释一下嘛//左边+1,上边+1, ...
java 两字符串相似度计算算法 -
天使建站:
写得不错,可以看这里,和这里的这篇文章一起看,有 ...
jquery 遍历对象、数组、集合 -
xue88ming:
很有用,谢谢
@PathVariable映射出现错误: Name for argument type -
jnjeC:
厉害,困扰了我很久
MyBatis排序时使用order by 动态参数时需要注意,用$而不是# -
TopLongMan:
非常好,很实用啊。。
PostgreSQL递归查询实现树状结构查询
Java集合框架之fastutil http://rensanning.iteye.com/blog/1548162
fastutil扩展了 Java集合框架,通过提供特定类型的map、set、list和queue,以及小内存占用、快速访问和插入;也提供大(64位)array、set 和 list,以及快速、实用的 二进制文件和文本文件的I/O类。它是自由软件,依照Apache许可证2.0发布,需要Java 6或更高版本。
类实现其标准接口(例如, map 的 Map),可以插入现有代码。此外,它们还提供未在标准类的附加??功能(如双向迭代器) 。
除了 对象和基本类型,fastutil类提供支持引用(references),即使用相等运算符,而不是比较对象的equals()方法。
源代码由C预处理器生成,从一组驱动文件开始。您可以在查看javadoc生成的文档。尤其是概述说明中fastutil使用的设计选择。
大数据结构
使用fastutil 6类的一组新类,使得它可以处理非常大的集合,特别是其规模超过2 31 。大数组是数组的数组,由一个神奇的静态方如果是带有64为索引的单位数组; big list 提供64位列表索引,hash big set 的 大小是只受限于核心内存量。常用的方法来自java.util.Arrays,类似的类已经扩展到大数组:可查看Javadoc关于 BigArrays和 IntBigArrays 的文档,以获得通用和特定类型的可用方法 。
http://fastutil.dsi.unimi.it/
虽然JCF(Java Collections Framework)在设计做的很好,但是从性能很功能上都有一定的局限性,所有出现很多的扩展JDK的集合框架出现,除了fastutil之外,主要的JDK集合框架的扩展还有以下这么多,他们都各自有各自的特点,各有所长:
Apache Commons Collections
Apache Commons Primitives
Google Guava
Trove
Huge Collections
Joda Primitives
Javolution
Goldman Sachs Collections
这里有一篇关于HashMap的性能测试:Large HashMap overview: JDK, FastUtil, Goldman Sachs, HPPC, Koloboke, Trove
由于fastutil提供了相当丰富的类,所以类库很大,比如fastutil-6.4.3.jar就有14.5MB。但是他在性能上极佳!
fastutil以存储的元素类型来划分package,每个package下都有丰富的Class。
如:
List、BigList、Map、SortedMap、Set、Stack、Iterator......
it.unimi.dsi.fastutil.booleans
it.unimi.dsi.fastutil.bytes
it.unimi.dsi.fastutil.chars
it.unimi.dsi.fastutil.doubles
it.unimi.dsi.fastutil.floats
it.unimi.dsi.fastutil.ints
it.unimi.dsi.fastutil.io
it.unimi.dsi.fastutil.longs
it.unimi.dsi.fastutil.objects
it.unimi.dsi.fastutil.shorts
1、Int相关
2、Long相关
koloboke
https://github.com/leventov/Koloboke/blob/master/compile/tutorial.md#map-like-generic-class
fastutil扩展了 Java集合框架,通过提供特定类型的map、set、list和queue,以及小内存占用、快速访问和插入;也提供大(64位)array、set 和 list,以及快速、实用的 二进制文件和文本文件的I/O类。它是自由软件,依照Apache许可证2.0发布,需要Java 6或更高版本。
类实现其标准接口(例如, map 的 Map),可以插入现有代码。此外,它们还提供未在标准类的附加??功能(如双向迭代器) 。
除了 对象和基本类型,fastutil类提供支持引用(references),即使用相等运算符,而不是比较对象的equals()方法。
源代码由C预处理器生成,从一组驱动文件开始。您可以在查看javadoc生成的文档。尤其是概述说明中fastutil使用的设计选择。
大数据结构
使用fastutil 6类的一组新类,使得它可以处理非常大的集合,特别是其规模超过2 31 。大数组是数组的数组,由一个神奇的静态方如果是带有64为索引的单位数组; big list 提供64位列表索引,hash big set 的 大小是只受限于核心内存量。常用的方法来自java.util.Arrays,类似的类已经扩展到大数组:可查看Javadoc关于 BigArrays和 IntBigArrays 的文档,以获得通用和特定类型的可用方法 。
http://fastutil.dsi.unimi.it/
虽然JCF(Java Collections Framework)在设计做的很好,但是从性能很功能上都有一定的局限性,所有出现很多的扩展JDK的集合框架出现,除了fastutil之外,主要的JDK集合框架的扩展还有以下这么多,他们都各自有各自的特点,各有所长:
Apache Commons Collections
Apache Commons Primitives
Google Guava
Trove
Huge Collections
Joda Primitives
Javolution
Goldman Sachs Collections
这里有一篇关于HashMap的性能测试:Large HashMap overview: JDK, FastUtil, Goldman Sachs, HPPC, Koloboke, Trove
由于fastutil提供了相当丰富的类,所以类库很大,比如fastutil-6.4.3.jar就有14.5MB。但是他在性能上极佳!
fastutil以存储的元素类型来划分package,每个package下都有丰富的Class。
如:
List、BigList、Map、SortedMap、Set、Stack、Iterator......
it.unimi.dsi.fastutil.booleans
it.unimi.dsi.fastutil.bytes
it.unimi.dsi.fastutil.chars
it.unimi.dsi.fastutil.doubles
it.unimi.dsi.fastutil.floats
it.unimi.dsi.fastutil.ints
it.unimi.dsi.fastutil.io
it.unimi.dsi.fastutil.longs
it.unimi.dsi.fastutil.objects
it.unimi.dsi.fastutil.shorts
1、Int相关
//===========IntList IntList list = new IntArrayList(); 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 Int2BooleanMap map = new Int2BooleanArrayMap(); map.put(1, true); map.put(2, false); //取值 boolean value1 = map.get(1); boolean value2 = map.get(2); System.out.println(value1);// true System.out.println(value2);// false //===========IntBigList IntBigList biglist = new IntBigArrayBigList(); biglist.add(0); biglist.add(1); biglist.add(2); long size = biglist.size64(); //取值 for(long index = 0; index < size; index++) { System.out.println(biglist.getInt(index)); } //===========IntSortedSet IntSortedSet s = new IntLinkedOpenHashSet( new int[] { 4, 3, 2, 1 } ); //获取第一个元素 System.out.println(s.firstInt()); // 4 //获取最后一个元素 System.out.println(s.lastInt()); // 1 //判断是否包含一个元素 System.out.println(s.contains(5)); // false
2、Long相关
Long2IntSortedMap m = new Long2IntAVLTreeMap(); m.put( 1, 5 ); m.put( 2, 6 ); m.put( 3, 7 ); m.put( 1000000000L, 10 ); System.out.println(m.get( 1 )); // 5 //当查找不到的时候,默认返回0 System.out.println(m.get( 4 )); // 0 //设置默认返回值 m.defaultReturnValue( -1 ); System.out.println(m.get( 4 )); // -1 //遍历Map LongBidirectionalIterator key1 = m.keySet().iterator(); long s = 0; while( key1.hasNext() ) { s += key1.nextLong(); } System.out.println(s); // 1000000006 //获取Key值小于4的子Map Long2IntSortedMap m1 = m.headMap( 4 ); LongBidirectionalIterator key2 = m1.keySet().iterator(); while( key2.hasNext() ) { System.out.println(key2.nextLong()); }
koloboke
https://github.com/leventov/Koloboke/blob/master/compile/tutorial.md#map-like-generic-class
发表评论
-
Java Comparable和Comparator
2016-06-26 08:52 693http://my.oschina.net/android52 ... -
ehcache 分布式支持
2016-06-05 22:26 1097原文 http://my.oschina.net/glenxu ... -
Intellij IDEA插件开发入门
2016-05-26 11:42 2881原文: http://blog.csdn.net/dc_726 ... -
阿里巴巴Druid数据源的配置与使用
2016-05-24 17:42 1541http://my.oschina.net/wjme/blog ... -
mysql中间件研究(Atlas,cobar,TDDL), 分库分表插件
2016-05-09 14:15 3441http://www.guokr.com/blog/47576 ... -
Java集合: Queue和Deque
2016-05-09 09:49 1861Queue http://my.oschina.net/kev ... -
使用gzip优化web应用(filter实现)
2016-05-07 01:45 1029使用gzip优化web应用(filter实现) http:// ... -
Byteman 3.0.5 发布,Java 字节码注入工具
2016-04-23 10:29 1767Byteman 3.0.5 发布,Java 字 ... -
RandomStringUtils的说明和生成随机汉字
2016-04-20 15:21 1386更多参考: http://my.oschina.net/wil ... -
通过IP地址获取地理位置
2016-04-20 15:19 893http://my.oschina.net/githubhty ... -
Java编程中使用正则表达式过滤非数字字符串
2016-04-14 13:51 1715/** * * @param str ... -
非对称加密DH算法,DH代码实现
2016-04-13 11:33 1354RSA算法原理(一)http:// ... -
企业支付宝账号开发接口教程
2016-03-31 14:52 1233企业支付宝账号开发接口教程--JAVA-UTF-8(实际操作- ... -
java double类型数据操作工具类
2016-03-28 17:36 1237http://my.oschina.net/yxwblog/b ... -
double转换到BigDecimal
2016-03-28 17:11 1542BigDecimal b = new BigDecimal(d ... -
Java 生成好看的验证码
2016-03-23 10:52 3357http://www.oschina.net/code/sni ... -
Linux环境安装配置Swftools
2016-03-22 21:01 1101http://tetop.blog.51cto.com/188 ... -
java压缩与解压缩文件
2016-03-20 22:03 1468http://www.oschina.net/code/sni ... -
java图像压缩
2016-03-19 23:20 951http://my.oschina.net/686991/bl ... -
会话状态保持,JSESSIONID,COOKIE,URL重写
2016-03-17 20:26 1760http://my.oschina.net/sniperLi/ ...
相关推荐
快速实用工具库(fastutil)是Java集合框架的一个强大扩展,专为提高性能和效率而设计。这个开源项目提供了一套全面的特定类型的数据结构,包括映射(Maps)、集合(Sets)、列表(Lists)和队列(Queues),以及...
标签:fastutil、unimi、dsi、jar包、java、API文档、中英对照版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...
标签:fastutil、unimi、dsi、jar包、java、API文档、中文版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译...
标签:fastutil、unimi、dsi、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心...
标签:unimi、dsi、fastutil、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心...
【fastUtil数据库图形界面开发工具】是一款专为简化数据库开发而设计的高效工具,它将复杂的数据库操作转化为直观的图形界面,使得开发者几乎无需编写代码就能进行常见的数据库管理任务。这款工具的核心价值在于提高...
```java import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.request.RequestOptions; ``` ### 基本使用 加载图片到ImageView: ```java ...
欢迎使用fastutil 是特定于类型的Java类的集合,这些类通过提供若干个容器(例如,映射,集合,列表和属性队列)来实现Java.util包的接口,从而扩展了Java Collections Framework; 它还为二进制文件和文本文件提供...
1. fastutil-6.5.7.jar:FastUtil是Java集合框架的高性能替代品,提供了更高效的数据结构,如多维数组、散列和排序映射和列表,对于处理大数据时的性能提升至关重要。 2. eclipse-collections-7.1.1.jar:Eclipse ...
标签:unimi、dsi、fastutil、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请...
fastutil库是针对Java集合框架的扩展,它提供了小内存占用和快速访问的特定类型的集合类,如map、set、list和queue,也包括大(64位)array、set和list,以及快速、实用的二进制文件和文本文件的I/O类。fastutil特别...
NULL 博文链接:https://josh-persistence.iteye.com/blog/2067574
快速实用程序介绍`fastutil` 通过提供特定类型的 `maps`、`sets`、`lists` 和 `queues` 扩展了 `Java:trade_mark: Collections Framework`,具有较小的内存占用和快速访问和插入; 还提供大型(64 位)`arrays`、`...
下面的blog对该Java项目有详细的描述:...
java8集合源码JPSG 暂时从中提取以进行新版本。 Java 原始特化生成器 Java Primitive Specializations Generator (JPSG) 是一个模板处理器,其主要目标是生成专用于任何 Java 基元类型和对象(泛型)类型的代码,而 ...
#### ASM - Java字节码操作框架 - **简介**:ASM 是一个用于操纵 Java 字节码的框架。它可以用来动态生成类或增强已有类的功能,广泛应用于 AOP(面向切面编程)、性能监控、代码热更新等场景。 - **特点**: - ...
中文-英文对照文档,中英对照文档,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【***.jar中文文档.zip】,再解压其中的 【***-...
中文-英文对照文档,中英对照文档,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【***.jar中文文档.zip】,再解压其中的 【***-...
中文-英文对照文档,中英对照文档,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【***.jar中文文档.zip】,再解压其中的 【***-...