Java集合框架GS Collections具体解释
Java集合框架GS Collections具体解释
作者:chszs。未经博主同意不得转载。经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs
GS 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-collections
GS 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("Comma separated, sorted last names: " + sortedLastNames.makeString());
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>
<dependency>
<groupId>com.goldmansachs</groupId>
<artifactId>gs-collections-testutils</artifactId>
<version>7.0.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.goldmansachs</groupId>
<artifactId>gs-collections-forkjoin</artifactId>
<version>7.0.0</version>
</dependency>
Gradle依赖为
dependencies {
compile 'com.goldmansachs:gs-collections-api:7.0.0'
compile 'com.goldmansachs:gs-collections:7.0.0'
testCompile 'com.goldmansachs:gs-collections-testutils:7.0.0'
compile 'com.goldmansachs:gs-collections-forkjoin:7.0.0'
}
Java集合框架GS Collections具体解释的更多相关文章
- java集合框架之Collections
参考http://how2j.cn/k/collection/collection-collections/369.html Collections是一个类,容器的工具类,就如同Arrays是数组的工 ...
- Java集合框架:Collections工具类
java.util.Collections工具类提供非常多实用的方法.使得程序员操作集合类的时候更加的方便easy,这些方法都是静态的. 整个Collections工具类源代码几乎相同有4000行.我 ...
- 另外几种Java集合框架具体解释续
另外几种Java集合框架具体解释续 作者:chszs,未经博主同意不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs fastutil库优于Trove库的 ...
- 【JAVA集合框架一 】java集合框架官方介绍 Collections Framework Overview 集合框架总览 翻译 javase8 集合官方文档中文版
原文链接: https://docs.oracle.com/javase/8/docs/technotes/guides/collections/overview.html 原文内容也一并附加在本文最 ...
- Java—集合框架 Collections.sort()、Comparable接口和Comparator接口
Collentions工具类--java.util.Collections Collentions是Java集合框架中,用来操作集合对象的工具类,也是Java集合框架的成员,与List.Map和Set ...
- (Set, Map, Collections工具类)JAVA集合框架二
Java集合框架部分细节总结二 Set 实现类:HashSet,TreeSet HashSet 基于HashCode计算元素存放位置,当计算得出哈希码相同时,会调用equals判断是否相同,相同则拒绝 ...
- 《深入理解Java集合框架》系列文章
Introduction 关于C++标准模板库(Standard Template Library, STL)的书籍和资料有很多,关于Java集合框架(Java Collections Framewo ...
- java集合框架之java HashMap代码解析
java集合框架之java HashMap代码解析 文章Java集合框架综述后,具体集合类的代码,首先以既熟悉又陌生的HashMap开始. 源自http://www.codeceo.com/arti ...
- Java集合框架类
java集合框架类图 Collection接口(List.Set.Queue.Stack):
随机推荐
- NSByteCountFormatter
可以将字节转化为我们需要的Kb或者m + (NSString *)stringFromByteCount:(long long)byteCount countStyle:(NSByteCountFor ...
- jackson 的UnrecognizedPropertyException错误
阅读更多 前段时间,使用jackson封装了json字符串转换为javabean的方法,代码如下: public static <T> T renderJson2Object(String ...
- pat 甲级 1009. Product of Polynomials (25)
1009. Product of Polynomials (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yu ...
- hihocoder #1419 : 后缀数组四·重复旋律4
#1419 : 后缀数组四·重复旋律4 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一个音乐旋律被表示为长度为 N 的数构 ...
- codechef AUG17 T3 Greedy Candidates
Greedy Candidates Problem Code: GCAC The placements/recruitment season is going on in various colleg ...
- 2010年最佳jQuery插件
原文发布时间为:2011-01-19 -- 来源于本人的百度文章 [由搬家工具导入] WDL的作者从大量的优秀jQuery插件精心筛选出一些对Web Designers有帮助的和具备非常不错的视觉效果 ...
- 当文字过长时裁剪(显示省略号或只裁剪 用CSS方法,不用程序)
原文发布时间为:2009-09-16 -- 来源于本人的百度文章 [由搬家工具导入] CSS中ellipsis()应用【转】 CSS手册中text-overflow属性的定义: 语法: text- ...
- 【Windows Message】MFC 通过F5,刷新桌面
//通过F5,刷新桌面 HWND hWndProgram = ::FindWindow( _T("Progman"), NULL); HWND hWndDefView = ::Fi ...
- ubuntu 12.04LTS下搭建Andriod开发环境记录
今天在Ubuntu 12.04 LTS 下安装了android开发环境. 1, 安装JDK 先去 Oracle下载Linux下的JDK压缩包,我下载的是jdk-7u4-linux-i586.tar.g ...
- python 保留两位小数方法
原博客连接:https://blog.csdn.net/Jerry_1126/article/details/85009810 保留两位小数,并做四舍五入处理 方法一:使用字符串格式化 a = 12. ...