Java博文
JAVA 21 都体验了吧
Java程序员必备的Intellij插件(长期更新,截止到2018-05-03) - 掘金
32.6k star🔥原来国内的独立开发者都在做这些事情
工作六年,我学会了用 Arthas 来辅助我的日常工作
太方便了!Arthas,生产问题大杀器 - 掘金
新一代Java高性能构建工具Maven-mvnd【实践可行版】
怎么在业务团队写好发消息的代码?
Intellij 开源热加载插件 HotSwapHelper 发布,兼容若依、jeecg 等框架
SpringBoot多环境日志配置_Java_快乐非自愿限量之名_InfoQ写作社区
VSCode配置JAVA开发环境_Java_IT蜗壳-Tango_InfoQ写作社区
Java虚拟线程探究与性能解析
Jakarta EE 11 发布,增强企业 Java 开发人员生产力和性能
重要:Java25正式发布(长期支持版)!
Access Token + Refresh Token 全解析:前后端分离架构的认证与安全方案
设计一个支持千万级用户的 IM 系统:消息推送如何保证可靠性
Spring Boot + CRaC 启动速度提升了10倍!
Java 25 新特性 更简洁、更高效、更现代
玩转 Java8 Stream,让你代码更高效紧凑简洁文章目录前言一、Stream特性二、Stream创建2.1用集合创 - 掘金
Guava 简介:让 Java 开发更高效
横空出世!MyBatis-Plus 同款 ES ORM 框架,用起来够优雅!
一个Java工程师的17个日常效率工具
Quarkus:轻量级 Java 的未来?
OpenJDK、Temurin、GraalVM...到底该装哪个?
Lombok坑哭了!若依框架一行@Data炸出Param为null,我卡了一下午才发现BaseEntity的猫腻
缓存性能王者,阿里巴巴二级缓存JetCache框架
MapStruct使用反思与简单易用性封装
Dockerfile 构建 Java 应用瘦身优化
还在手动搭Maven多模块?这款IDEA插件让我效率提升10倍(真实体验)
本文档使用 MrDoc 发布
-
+
Guava 简介:让 Java 开发更高效
Guava 是由 Google 开源的 Java 库,旨在为开发者提供一系列实用的工具类,以提高开发效率。它包含了集合类、缓存、并发工具、字符串处理等实用方法。 ## Guava 的常用场景 1. **集合处理**:Guava 提供了多种扩展的集合类,如 `Multiset`、`Multimap`、`Table` 等,这些类在处理复杂数据结构时非常有用。 2. **缓存**:Guava 的缓存机制可以帮助开发者轻松实现数据缓存,提高程序性能。 3. **并发编程**:Guava 提供了强大的并发工具,如 `ListenableFuture`,使得多线程编程更容易。 4. **字符串处理**:Guava 提供了方便的字符串工具类,如 `Joiner` 和 `Splitter`,用于字符串的拼接和分割。 ## 常用的 API ### 集合工具类 - **ImmutableList**:不可变列表,用于防御性编程和性能提升。 ```java import com.google.common.collect.ImmutableList; ImmutableList list = ImmutableList.of("apple", "banana"); ``` - **Multiset**:可重复元素的集合。 ```java import com.google.common.collect.HashMultiset; HashMultiset multiset = HashMultiset.create(); multiset.add("apple", 3); ``` - **Multimap**:可重复键的映射。 ```java import com.google.common.collect.ArrayListMultimap; ArrayListMultimap multimap = ArrayListMultimap.create(); multimap.put("fruit", "apple"); multimap.put("fruit", "banana"); ``` - **BiMap**:双向映射,键和值都不能重复。 ```java import com.google.common.collect.HashBiMap; HashBiMap bimap = HashBiMap.create(); bimap.put("key1", "value1"); ``` ### 缓存 - **CacheBuilder**:用于构建缓存,支持多种缓存策略。 ```java import com.google.common.cache.CacheBuilder; Cache cache = CacheBuilder.newBuilder() .maximumSize(1000) .expireAfterWrite(10, TimeUnit.MINUTES) .build(); ``` ### 并发工具 - **ListenableFuture**:支持回调的 Future,用于异步编程。 ```java import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListeningExecutorService; ListeningExecutorService executor = MoreExecutors.listeningDecorator(Executors.newSingleThreadExecutor()); ListenableFuture future = executor.submit(() -> "Hello, World!"); Futures.addCallback(future, new FutureCallback() { public void onSuccess(String result) { System.out.println(result); } public void onFailure(Throwable t) { t.printStackTrace(); } }); ``` ### 字符串处理 - **Joiner**:用于字符串的拼接。 ```java import com.google.common.base.Joiner; String joined = Joiner.on(",").join(Arrays.asList("1", "2", "3")); ``` - **Splitter**:用于字符串的分割。 ```java import com.google.common.base.Splitter; List parts = Splitter.on(",").splitToList("1,2,3"); ``` ### 其他工具 - **Preconditions**:用于参数校验。 ```java import com.google.common.base.Preconditions; Preconditions.checkNotNull(obj, "Object cannot be null"); ``` - **Optional**:用于处理可能为 null 的值。 ```java import com.google.common.base.Optional; Optional optional = Optional.fromNullable("Hello"); if (optional.isPresent()) { System.out.println(optional.get()); } ``` ## 解决的问题 1. **简化代码**:Guava 提供了许多实用工具类,帮助开发者简化代码,提高可读性和可维护性。 2. **提高性能**:通过缓存和并发工具,Guava 可以显著提高程序的性能。 3. **减少错误**:Guava 的验证机制和防御性编程方法有助于减少编码错误。 ### 示例:使用 Guava 缓存提高性能 假设我们有一个昂贵的数据库查询操作,我们可以使用 Guava 缓存来缓存查询结果,以提高程序的性能。 ```java import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; public class DatabaseQueryCache { private final LoadingCache cache; public DatabaseQueryCache() { cache = CacheBuilder.newBuilder() .maximumSize(1000) .expireAfterWrite(10, TimeUnit.MINUTES) .build(new CacheLoader() { public String load(String key) { try { Thread.sleep(1000); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } return "Result for " + key; } }); } public String query(String key) { return cache.getUnchecked(key); } public static void main(String[] args) { DatabaseQueryCache cache = new DatabaseQueryCache(); System.out.println(cache.query("key1")); System.out.println(cache.query("key1")); } } ``` ### 示例:使用 Guava 的 `Multimap` 处理复杂数据结构 假设我们需要处理一个复杂的数据结构,其中一个键可以对应多个值,我们可以使用 Guava 的 `Multimap` 来实现。 ```java import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.Multimap; public class MultimapExample { public static void main(String[] args) { Multimap multimap = ArrayListMultimap.create(); multimap.put("fruit", "apple"); multimap.put("fruit", "banana"); multimap.put("vegetable", "carrot"); System.out.println(multimap.get("fruit")); } } ``` 通过这些示例,我们可以看到 Guava 如何帮助我们简化代码、提高性能和减少错误。
admin
2025年9月30日 20:25
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码