创建不可修改集合视图

本文介绍了一种通过Java的Collections.unmodifiableSet方法创建只读集合视图的技术,该技术可以有效防止用户在使用过程中误修改集合内容。

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

在实际工作中,有一个集合,我们期望是只读的,不可修改。比如,从远程配置中心中拉取的配置,运行中,我们只可以调用read相关方法,不可调用write相关方法。

如何从代码机制上,而不是人为认知上拒绝write误调用呢?


创建不可修改集合视图

/**
 * 集合视图
 */
public class CollectionView {

    /**
     * 白名单
     */
    private Set<String> whiteSet;

    /**
     * eg:初始化时从配置中心拉取最新的配置赋给whiteSet;
     * whiteSet是只读的,不可修改
     *
     * 使用Collections.unmodifiableSet获取只读视图
     * 防止用户在使用过程中修改容器
     */
    private void init(){
        //模拟拉取远程配置到本地
        Set<String> temp = new HashSet<>();
        temp.add("91793y8");

        whiteSet = Collections.unmodifiableSet(temp);
    }

    public Set<String> getWhiteSet() {
        return whiteSet;
    }

    public static void main(String[] args) {
        CollectionView view = new CollectionView();
        view.init();

        Set<String> whiteSet = view.getWhiteSet();
        //java.lang.UnsupportedOperationException
        whiteSet.add("19793");
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值