Guava ImmutableMap

2023-12-25 23:32
文章标签 guava immutablemap

本文主要是介绍Guava ImmutableMap,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、不可变集合

如果一个对象实例不能被更改就是一个Immutable的对象。
Java SDK提供的大量值对象,比如String等都是Immutable的对象。

1、为什么使用它呢?

  • 线程安全
  • 更有效的利用内存
  • 可作为常量

2、使用场景

适合
  • 确定性的配置, 比如根据不同的key值得到不同的请求url
  • 写单元测试
不适合
  • key, value为未知参数, 可能有null产生的情况

3、Guava集合和不可变对应关系

Guava集合和不可变对应关系

二、使用

ImmutableMap中key和value均不能为null,放入null值会抛出NPE

1、引入依赖

<dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>26.0-jre</version>
</dependency>

2、实例1 —— 单个

//创建ImmutableMap:
Map<String,Object> immutableMap = new ImmutableMap.Builder<String,Object>().build();
//在创建时放值:
Map<String,Object> immutableMap = new ImmutableMap.Builder<String,Object>().put("k1","v1").put("k2","v2").build();
//创建后不可更改
immutableMap.put("k1","v3");//会抛出java.lang.UnsupportedOperationException

3、实例2 —— 批量

import com.google.common.collect.ImmutableMap;private static List<Map<String, String>> books = Arrays.asList(ImmutableMap.of("id", "book-1","name", "Harry Potter and the Philosopher's Stone","pageCount", "223","authorId", "author-1"),ImmutableMap.of("id", "book-2","name", "Moby Dick","pageCount", "635","authorId", "author-2"),ImmutableMap.of("id", "book-3","name", "Interview with the vampire","pageCount", "371","authorId", "author-3"));

这篇关于Guava ImmutableMap的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/537356

相关文章

Java后端微服务架构下的API限流策略:Guava RateLimiter

Java后端微服务架构下的API限流策略:Guava RateLimiter 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 在微服务架构中,API限流是保护服务不受过度使用和拒绝服务攻击的重要手段。Guava RateLimiter是Google开源的Java库中的一个组件,提供了简单易用的限流功能。 API限流概述 API限流通过控制请求的速率来防止

谈谈经典限流方法—漏桶、令牌桶与Guava RateLimiter的实现

大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 暴走大数据 点击右侧关注,暴走大数据! 高并发的业务系统经常要接受大流量的考验,为了保证系统的响应度和稳定性,往往都需要对有风险的接口实施限流(rate limiting),更高大上的说法则是“流量整形”(traffic shaping)。限流的思想最初来源于计算机网络,有两种经典的方法:漏桶和令牌桶。本文先来稍微研究一下它们。

经典限流方法——漏桶、令牌桶与Guava RateLimiter的实现

点击上方蓝色字体,选择“设为星标” 回复”资源“获取更多资源 大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 暴走大数据 点击右侧关注,暴走大数据! 高并发的业务系统经常要接受大流量的考验,为了保证系统的响应度和稳定性,往往都需要对有风险的接口实施限流(rate limiting),更高大上的说法则是“流量整形”(traffic shaping)。限流的思想最初来源于计算机

日志系统开发总结之Guava/EventBus

http://www.toutiao.com/a6351265293244301570/?tt_from=mobile_qq&utm_campaign=client_share&app=explore_article&utm_source=mobile_qq&iid=5840657922&utm_medium=toutiao_ios

使用Guava retryer优雅的实现接口重调机制

API 接口调用异常, 网络异常在我们日常开发中经常会遇到,这种情况下我们需要先重试几次调用才能将其标识为错误并在确认错误之后发送异常提醒。guava-retry可以灵活的实现这一功能。Guava retryer在支持重试次数和重试频度控制基础上,能够兼容支持多个异常或者自定义实体对象的重试源定义,让重试功能有更多的灵活性。Guava Retryer也是线程安全的,入口调用逻辑采用的是Java.u

springboot集成guava布隆过滤器

1.创建springboot项目,引入maven依赖 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>23.0</version></dependency> 2.创建guava布隆过滤器 @Componentpublic class GuavaFilter {/

Could not get resource guava-23.0.jar

解决发放如下 jcenter{ url 'https://maven.aliyun.com/repository/jcenter'}

[AIGC] Guava Library 中常用的一些工具类详解

Google Guava 是一个功能强大的 Java 库,它提供了大量用于优化代码和提高代码质量的工具。该库提供了许多常用的实用类,下面我们来详细介绍一些在编程应用开发中经常需要的。 文章目录 1. 集合类2. I/O 类1. ByteStreams(字节流)2. CharStreams(字符流)3. Files(文件)4. MoreFiles(文件)5. Resources(资

[AIGC] 使用Google的Guava库中的Lists工具类:常见用法详解

在Java程序设计中,集合是我们最常用的数据结构之一。为了方便我们操作集合,Google的Guava库提供了一个名为Lists的工具类,它封装了许多用于操作List对象的实用方法。在本文中,我们将详细介绍其常见的用法,以帮助您更好地理解和运用此工具类。 文章目录 1. `Lists.newArrayList()`2. `Lists.partition(List list, i

Java高手的30k之路|面试宝典|熟悉常用开源集合库Guava和ApacheCommonsCollections

Apache Commons Collections Apache Commons Collections 是一个扩展 Java Collections Framework 的开源库,提供了许多实用的集合类和相关工具。 常用的集合类: 1. Bag 接口及其实现 Bag 是一个特殊的集合,允许重复元素,并能跟踪每个元素的出现次数。 HashBag:基于 HashMap 实现的 Bag。T