Java集合框架GS Collections详解

简介: 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/50511889 Java集合框架GS Collections详解作者:chszs,未经博主允许不得转载。
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/50511889

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'
}
目录
相关文章
|
24天前
|
Java
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
25 0
|
29天前
|
算法 Java 数据处理
Java集合框架的优缺点
Java集合框架的优缺点
|
4天前
|
Java 大数据 云计算
Spring框架:Java后台开发的核心
【4月更文挑战第15天】Spring框架在Java后台开发中占据核心位置,因其控制反转(IoC)、面向切面编程(AOP)、事务管理等特性提升效率和质量。Spring提供数据访问集成、RESTful Web服务和WebSocket支持。优势包括高效开发、灵活扩展、强大生态圈和广泛应用。应用于企业级应用、微服务架构及云计算大数据场景。掌握Spring对Java开发者至关重要。
|
7天前
|
存储 Java 编译器
Java集合丛林:深入了解集合框架的秘密
Java集合丛林:深入了解集合框架的秘密
13 0
Java集合丛林:深入了解集合框架的秘密
|
10天前
|
Java BI
Java 获取周,月,年日期集合(统计图)
Java 获取周,月,年日期集合(统计图)
Java 获取周,月,年日期集合(统计图)
|
11天前
|
存储 Java 数据库连接
java使用mp持久化框架,写入5000个字符,但是VARCHAR(255) 会报错
使用Java的MyBatis Plus框架时,如果尝试将超过VARCHAR(255)限制的字符串(如5000个字符)存入数据库,会抛出异常。解决方法是将列类型改为TEXT。可通过在实体类属性上添加`@TableField(typeHandler = JdbcType.CLOB)`注解,如`private String content;`,将属性映射到CLOB类型列,以存储更长字符串。
9 0
|
11天前
|
存储 Java
java反射——设计框架的灵魂
java反射——设计框架的灵魂
|
16天前
|
前端开发 安全 Java
使用Java Web框架:Spring MVC的全面指南
【4月更文挑战第3天】Spring MVC是Spring框架的一部分,用于构建高效、模块化的Web应用。它基于MVC模式,支持多种视图技术。核心概念包括DispatcherServlet(前端控制器)、HandlerMapping(请求映射)、Controller(处理请求)、ViewResolver(视图解析)和ModelAndView(模型和视图容器)。开发流程涉及配置DispatcherServlet、定义Controller、创建View、处理数据、绑定模型和异常处理。
使用Java Web框架:Spring MVC的全面指南
|
18天前
|
Java 关系型数据库 数据库连接
52 类 110 个常用 Java 组件和框架整理
52 类 110 个常用 Java 组件和框架整理
13 0
|
21天前
|
存储 安全 Java
【Java技术专题】「Guava开发指南」手把手教你如何进行使用Guava工具箱进行开发系统实战指南(不可变集合篇)
【Java技术专题】「Guava开发指南」手把手教你如何进行使用Guava工具箱进行开发系统实战指南(不可变集合篇)
30 1