你不知道的 Guava Collect,都在这了

网站建设4年前发布
17 0 0

大家好,我是指北君。,集合操作是编程中使用频率非常高的,所有有一款针对集合的操作工具是非常有必要的。通过框架提供的工具一方面可以减少开发相似功能的耗时;同时框架在安全与稳定性上更被推荐。,Guava Collect是Guava工具包中的一个子模块,主要对jdk中的集合操作添加了一些简易的API,同时也是对Collections工具类的扩展。当然Guava还定义了一些特定场景的数据结构以及一些针对jdk集合的优化,最典型的就是Immutable Collections(不可变集合),你会发现调用Guava API很多都是不可变的,我们常见的集合类有:,集合是一种非常常见的数据结构,JDK在处理各种数据集时,提供了以上集合类型的数据结构以及其对应API方便开发者高效简易地对数据对象操作,guava主要提供了以下几个方面的支持:,增加了不可变集合,增加了新的集合类型,优化了常用的操作,Guava Collect作为集合操作工具,我们主要从实际业务中了解其能够帮助我们实现怎样的需求,下面看下其API的使用情况:,假设我们有10000名学生,通过Faker生成这些模拟的学生数据数据:,Multiset获取元素出现频次。比如获取男生与女生的学生数量分别为多少,Multimap一个键对应多个值时。比如查看各个年龄的学生是哪些,BiMap键和值都是唯一时。比如处理学生的邮箱和手机号,客户互换键值位置,Table二维表,通过行(键)、列(键)取值 比如可以以学生为行数据,其中id为行键,列名分别为学生属性名称,ClassToInstanceMap当值是键的类型实例时,通过该Map现在键值关系,RangeSet区间Set。比如通过学生分数确定学生等级,RangeMap和RangeSet类似,区别是添加了区间命名。和上面一样,下面看下对常用集合的一些操作,当然我们首先需要将数据使用Guava Collect对应的数据结构来存储数据,这样才能使用其对应的API:,自从Jdk中引入了集合Stream的操作后,从很大程度上简化了对集合的操作,以前大量代码现在可能简单几行就能够达到相同的效果,同时支持并发处理,一并提升了效率。,下面看下常见的集合基于stream操作,同样以上面的学生为例:,遍历 forEach,转换 map将元素转换成其他类型。比如根据学生名称、性别组成新的List;以id为键元素为值的Map或者学生姓名拼接的字符串等等,过滤 filter根据条件匹配满足要求的元素。如找出分数大于80分的学生,拆解 flatMap将二层级集合进行拆解,并成一级集合。如[[1,2,3],[4,5,6]] -> [1,2,3,4,5,6],计算实现数据的汇总、求平均值、最大值...,当然主要针对数字(Number)类型,归纳计算 reduce在很多语言中都存在的函数,如python、javascript。数据的累加、map的功能,并发 parallel上面的操作我们还可以使用parallel对stream并发处理,分段处理对集合按固定规格分段处理,处理大批量数据时,结合parallel实现分段并发处理来提示效率,本章主要介绍了Guava Collect部分,以及对集合操作的常用API,通过示例可以看到有其对JDK集合的扩展有了更广泛与简易的操作。同时在JDK引入 了Stream操作后,Guava Collect中的很多功能通过Stream也可以比较容易的实现了,当然具体如何选择根据实际情况。需要注意的是Guava Collect中 返回的基本都是不可变的集合,这样在对数据的操作会更加的安全。,

© 版权声明

相关文章