ImmutableMap使用

Guava库中的ImmutableMap是一个适用于多线程环境的不可变Map,确保线程安全并提供高效率。不可变对象在创建后无法修改,因此在并发环境中更安全,无需锁定机制。可以通过ImmutableMap.Builder构建,如示例所示,但键值对不允许为null。这种数据结构适合存储不变的配置信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

来自google guava的一个工具类,如果需要使用这个类,需要先引入maven依赖

        <!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>30.1.1-jre</version>
        </dependency>

Guava提供的ImmutableMap是一个支持多线程环境下面的安全的Map,同时效率也是很高的Key-Value集合,为什么他就是安全的呢。

如果一个对象实例不能被更改就是一个Immutable的对象,immutable Objects就是那些一旦被创建,他们的状态就不能被改变的Objects没每次对他们的改变都是产生了新的Immutable的对象,而mutable Object就是那些创建后,状态可以被改变的Objects

immutable objects比传统的mutable对象在多线程应用中更具有优势,它不仅能够保证对象的状态不被改变而且还可以不适用锁机制就能被其他线程共享。

如何创建:

 ImmutableMap.Builder<String, Object> request = ImmutableMap.builder();
    request.put("one","1");
    request.put("two","2");
    request.put("three","3");
    Map<String, Object> map = request.build();

这个实例创建的时候,只是创建了一个空的对象。
那么实际效用的是build()

key值和value值均不能赋值为null,放入null值会抛出NullPointerException
个人感觉更适合永久性不会更改的配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值