【世界时快讯】java guava主要功能介绍及使用心得总结

2023-05-21 11:52:13 脚本之家
目录
1. 前言2. Guava主要功能介绍2.1 集合操作2.2 缓存2.3 字符串处理2.4 函数式编程2.5 其他实用工具3. 结论

1. 前言

Guava是一个由Google开发的Java核心库,它提供了很多有用的方法和实用工具类,可以帮助开发人员提高代码质量和开发效率。在本文中,我们将详细介绍Guava框架的主要功能,并通过实例代码来展示如何使用这些功能。

Guava框架的初衷是为了解决Java标准库中的一些不足之处,例如集合操作的不便利、缺少功能强大的缓存实现等问题。随着Guava的不断发展,它已经成为Java开发者们的“必备”工具之一。Guava的主要特点有:


(相关资料图)

优雅的API设计强大的功能易于使用良好的性能

Guava框架的源代码托管在 github.com/google/guav…,你可以通过Maven或者Gradle将Guava添加到你的项目中。下面是两种添加Guava的方式:

Maven:


  com.google.guava
  guava
  30.1-jre

Gradle:

implementation "com.google.guava:guava:30.1-jre"

2. Guava主要功能介绍

接下来,我们将通过示例代码,介绍Guava框架的主要功能。

2.1 集合操作

集合可以说是我们写的较多的代码了,Guava对Java集合类进行了扩展,提供了更多实用的操作。例如:

不可变集合(Immutable Collections)。新的集合类型(Multiset、Multimap、BiMap、Table)。

Immutable Collections:

Immutable Collections是一种不可变的集合类型。与普通的集合(如List、Set、Map)相比,Immutable Collections在初始化后无法对其做任何修改。这样可以确保数据的一致性和安全性。

import com.google.common.collect.ImmutableList;
public class GuavaExample {
  public static void main(String[] args) {
    ImmutableList names = ImmutableList.of("Alice", "Bob", "Charlie");
    // names.add("David"); // 这将引发UnsupportedOperationException异常
  }
}

新的集合类型:

Guava还引入了一些新的集合类型,例如Multiset、Multimap、BiMap和Table。这些新的集合类型可以帮助我们更方便地处理复杂的数据结构。

Multiset names = HashMultiset.create();
names.add("Alice");
names.add("Bob");
names.add("Alice");
System.out.println(names.count("Alice")); // 输出: 2

集合计算:

Guava 提供了一些常用的集合计算工具类,可以帮助开发者轻松地对集合进行计算和操作。

Iterators类:提供了一些静态方法,用于对迭代器进行操作,如转换、过滤、合并等。Lists类:提供了一些静态方法,用于对列表进行操作,如反转、拆分、排序等。Sets类:提供了一些静态方法,用于对Set进行操作,如取交集、并集、差集等。Maps类:提供了一些静态方法,用于对Map进行操作,如转换、合并、排序等。Multisets类:提供了一些静态方法,用于对多重集合进行操作,如计算元素出现的次数、取交集、并集等。Multimaps类:提供了一些静态方法,用于对多重映射进行操作,如计算键值对数量、转换、合并等。

7.Table类用于处理二维表格数据、

8.Ordering类用于对集合进行排序等。

下面是一个简单的列子

List list1 = Arrays.asList("foo", "bar", "baz");
List list2 = Arrays.asList("bar", "qux", "corge");
// 合并并去重复
List mergedList = ImmutableList.copyOf(Sets.union(Sets.newHashSet(list1), Sets.newHashSet(list2)));
System.out.println(mergedList);
// 取两个集合的交集
Set intersectionSet = Sets.intersection(Sets.newHashSet(list1), Sets.newHashSet(list2));
System.out.println(intersectionSet);
// 对集合list1排序
List sortedList = Ordering.natural().sortedCopy(list1);
System.out.println(sortedList);

2.2 缓存

Guava提供了一个功能丰富且性能优越的缓存实现:Cache。Guava Cache可以帮助我们轻松地实现缓存功能,提高程序运行效率。

Cache cache = CacheBuilder.newBuilder()
    .expireAfterWrite(10, TimeUnit.MINUTES) // 设置缓存过期时间
    .maximumSize(1000) // 设置缓存最大容量
    .build();
cache.put("key", "value");
System.out.println(cache.getIfPresent("key")); // 输出: value

2.3 字符串处理

Guava提供了一系列易用且功能强大的字符串处理工具类。例如:

Joiner:用于连接字符串Splitter:用于分割字符串CharMatcher:用于匹配和操作字符。例如,可以使用CharMatcher.whitespace().trimFrom(" foo ")将字符串两端的空格删除,返回"foo"。CaseFormat:用于在不同的命名格式(如驼峰命名法、下划线命名法等)之间进行转换Strings:各种字符串处理方法,如判断字符串是否为空或空白、在字符串中查找子字符串、替换字符串等。

Joiner:

Joiner类可以帮助我们轻松地将集合或数组中的元素连接成一个字符串。

List names = Arrays.asList("Alice", "Bob", "Charlie");
String joinedNames = Joiner.on(", ").join(names);
System.out.println(joinedNames); // 输出: Alice, Bob, Charlie

Splitter:

Splitter类可以帮助我们轻松地将字符串分割成集合或数组。

String names = "Alice, Bob, Charlie";
List nameList = Splitter.on(", ").splitToList(names);
System.out.println(nameList); // 输出: [Alice, Bob, Charlie]

CharMatcher:

CharMatcher类可以帮助我们处理字符匹配和过滤问题。

CaseFormat:

CaseFormat类可以帮助我们轻松地进行字符大小写转换和格式化。比如:

String lowerCamel = "lowerCamelCase";
System.out.println(CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_CAMEL, lowerCamel)); // 输出: LowerCamelCase
System.out.println(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, lowerCamel)); // 输出: lower_camel_case
System.out.println(CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, lowerCamel)); // 输出: LOWER_CAMEL_CASE

2.4 函数式编程

Guava支持函数式编程风格,提供了一些实用的函数接口,如Function、Predicate和Supplier。这些接口可以帮助我们更好地处理数据集合和数据流。

List numbers = Lists.newArrayList(1, 2, 3, 4, 5);
    // 使用Function进行数据转换
    Collection squaredNumbers = Collections2.transform(numbers, new Function() {
      public Integer apply(Integer input) {
        return input * input;
      }
    });
    System.out.println(squaredNumbers); // 输出: [1, 4, 9, 16, 25]
    // 使用Predicate进行数据过滤
    Collection evenNumbers = Collections2.filter(numbers, new Predicate() {
      public boolean apply(Integer input) {
        return input % 2 == 0;
      }
    });
    System.out.println(evenNumbers); // 输出: [2, 4]

2.5 其他实用工具

Guava还提供了其他许多实用工具,例如:

原生类型处理工具类:Ints、Longs、Doubles等范围(Range):用于处理区间停止计时器(Stopwatch):用于测量时间散列(Hashing):用于计算哈希值

3. 结论

本文介绍了Guava框架的主要功能,包括集合操作、缓存、字符串处理、函数式编程以及其他实用工具。Guava通过优雅的API设计、强大的功能、易用性和良好的性能,为Java开发者带来了极大的便利。还等什么,这么好用的框架赶紧用起来吧。

以上就是java guava主要功能介绍及使用心得总结的详细内容,更多关于java guava使用心得总结的资料请关注脚本之家其它相关文章!

标签:

相关文章

【世界时快讯】java guava主要功能介绍及使用心得总结

这篇文章主要为大家介绍了java guava主要功能介绍及使用心得总结,有需要的朋友可以借鉴参考下,希望能够

2023-05-21

塘沽街道富贵社区:巡查网格员助力垃圾分类落实落细 当前资讯

津滨海讯(记者李琳)日前,塘沽街道富贵社区巡查网格员积极助力社区工作人员开展“垃圾分类伴我行”宣...

2023-05-21

专项债发行流程详解_专项债发行流程 每日视讯

1、单只专项债券应当以单项政府性基金或专项收入为偿债来源。2、单只专项债券可以对应单一项目发行,也可以

2023-05-21

豪声电子(838701):国内电声元器件第一梯队 专注下游智能化、迭代化需求

豪声电子(838701):国内电声元器件第一梯队专注下游智能化、迭代化需求

2023-05-21

三国志战略版没援助的魏法象,打出1.8W战功!

大家好,我是三战配将君,每天帮你配将开荒冲榜,和你说求贤令的武将选择,带给你当下环境最新最强的阵容,

2023-05-21

《浪姐》小考淘汰争议多,节目组反而是大赢家? 焦点速讯

一早便已流传的“浪姐4一公淘汰名单”中,《佳人》小组许靖韵、唐伯虎被团灭。事实上二人有先后。唐伯虎...

2023-05-21

舞龙祈丰、摸鱼打斗、美食宴友……武鸣“壮族四月四”好热闹

武鸣区马头镇处于大明山南麓骆越古国的中心腹地,是骆越文化、龙母文化的发源地,至今仍保留着大量珍贵的骆

2023-05-21

生日蛋糕6寸有多大(生日蛋糕6寸大概是直径15)_全球热点

生日蛋糕6寸大概是直径15 24厘米的大小。生日蛋糕是每个人生日的时候具备的糕点,根据单位的换算,1寸大概

2023-05-21

“寸土”何以生“寸金”?看各地统筹土地开发和保护

记者探访首批“土地资源类”自然资源节约集约示范县(市)——“寸土”何以生“寸金”(深阅读·推进自...

2023-05-21

关爱折翼天使成长 安化两所小学联手举办全国助残日主题活动-每日信息

安化县东坪完小学生与安化县特殊教育学校学生在进行分组绘画活动。安化县特殊教育学校老师与安化县东坪

2023-05-21

鼎力相助是自谦吗_鼎力相助是谦词还是敬语

1、鼎力相助是敬词,一般用于请人帮助时的客气话。2、拼音:dǐnglìxiāngzhù。3、释义:鼎力:大力。4、

2023-05-21

热门:申光

1、《トイレの神様》演唱:植村花菜作词:植村花菜・山田ひろし作曲:植村花菜所属专辑:《トイレの神様》

2023-05-21

世界观察:都是颜值惹的祸!火影忍者中喜欢佐助的到底有几个?

香燐是在战火湮灭的漩涡一族中唯一活着无伤的少女,后来作为草之国忍者参加木叶中忍考试的时候,她与同伴

2023-05-21

怎么成为带货主播 怎样成为带货主播 环球热点

看到网上那么多主播都在推销金主爸爸的产品,主播也可以因此获利,有时候这种带货主播月入个上千几万也是不

2023-05-21

环球聚焦:西充县气象台发布大风蓝色预警信号【IV级/一般】【2023-05-21】

西充县气象台2023年05月21日07时42分发布大风蓝色预警信号:预计我县南台街道、晋城街道、常林镇、莲池镇、

2023-05-21

【天天时快讯】选美冠军!清华大学女生洪昊昀参加世界小姐选美大赛,夺得两项冠军,她说:我要打破人们对理工科女生的偏见

今天,从云南大理第72届世界小姐选美大赛传来好消息,清华大学女生洪昊昀获得中国区最强人气冠军和东部赛区

2023-05-21

全球速读:二年级思维导图大全集-思维导图大全集

1、第一章 思维导图概述第一节 揭开思维导图的神秘面纱第二节 让2 5亿人受益一生的思维习惯第三节 怎样

2023-05-21

陇县腊八节吃什么 陇县腊八节吃哪些食物 新资讯

1、陇县腊八节吃腊八粥。2、腊八粥,又称七宝五味粥、佛粥、大家饭等,是一种由多样食材熬制而成的粥。在这

2023-05-21

全鸡翅不煎的做法?

鸡翅深受男女老少的喜爱,尤其小朋友们特别爱吃,而红烧鸡翅的方法有复杂的有简单的,我们往往只用最简单的

2023-05-21

铱和黄金哪个贵 铱 全球动态

今天来聊聊关于铱和黄金哪个贵,铱的文章,现在就为大家来简单介绍下铱和黄金哪个贵,铱,希望对各位小伙伴

2023-05-21

李立群携老婆回河南祭祖!激动到声音哽咽睡不着,一家十口如复制

5月19日,李立群晒出数个视频,分享自己携老婆回河南老家祭祖的画面,激动之情溢于言表。抵达河南焦作老家

2023-05-21

1800亿存款紧急出逃 耶伦警告!16万亿巨头发声

当前,美国银行业“失血”仍在继续,存款规模连续第三周下降,刷新两年来最低水平。

2023-05-21

高质量发展调研行丨打开“盲盒”:用5G制造5G的智能工厂究竟什么样?

高质量发展调研行丨打开“盲盒”:用5G制造5G的智能工厂究竟什么样?

2023-05-21

【独家焦点】鳜鱼嘌呤含量高吗 鳜鱼痛风能吃吗

1、鳜鱼嘌呤不算太高,属于低嘌呤含量的鱼类,每100克鳜鱼当中的嘌呤含量为24毫克。2、由于鳜鱼嘌呤不算太

2023-05-21

世界即时看!NBA高管普遍认为火箭队将利用4号选秀权作为交易筹码,引进哈登

重建中的休斯顿火箭队有充分的条件在2023-24赛季提升NBA的战绩排名,因为2024年的首轮选秀权很可能会被送往

2023-05-21

hpv感染了打9价有坏处吗_与青春有关的日子2我要活下去_环球最资讯

1、片头主题曲是孙楠演唱插曲是威薇演唱片尾曲是代小波演唱还有那小孩唱的驼羔之歌(童声版)。本文到此分享

2023-05-21

又一个!马兹拉维送点,索博斯洛伊点射攻破拜仁大门

直播吧5月21日讯拜仁vs莱比锡第85分钟,马兹拉维送点,索博斯洛伊破门,比分变为拜仁1-3莱比锡。…

2023-05-21

每日速递:世乒赛:国乒双打开门红!林诗栋、蒯曼3-0晋级,人生第一次参赛

北京时间5月21日凌晨,2023年德班世乒赛继续首日的战斗,国乒也迎来了三项双打的首战,2005年出生的林诗栋

2023-05-21

曝GDP组合将指导文班亚马!邓肯又要来蹭饭了 波波维奇已飞往法国_全球热讯

曝GDP组合将指导文班亚马!邓肯又要来蹭饭了波波维奇已飞往法国,帕克,军校,马刺队,文班亚马,男子篮球,新秀

2023-05-21

最新发布
精彩图文
精彩推送

Copyright ©  2015-2022 国华娱乐网版权所有  备案号:京ICP备2021034106号-22   联系邮箱:55 16 53 8 @qq.com